TCP 受信バッファーのサイズは、TCP プロパティー recv_buf (デフォルトでは 128K バイト) を使用して設定します。しかし、アプリケーションは利用可能な帯域幅を均等に使用しません。このため、接続待機時間に応じてデフォルトのサイズを変更する必要があります。たとえば、Oracle Solaris の Secure Shell 機能を使用すると、データストリームに対して追加のチェックサム処理や暗号化処理が実行されるため、帯域幅の使用量にオーバーヘッドが発生します。したがって、バッファーサイズを増やす必要がある可能性があります。同様に、一括転送を行うアプリケーションが帯域幅を効率的に使用できるようにするためにも、同じバッファーサイズ調整が必要です。
次のように、帯域幅遅延積 (BDP) を推定することで、使用する正しい受信バッファーサイズを計算できます。BDP は、使用可能な帯域幅に接続待機時間の値を乗算して算出します。
接続待機時間の値を取得するには、ping –s host コマンドを使用します。
適切な受信バッファーサイズは、BDP の値に近似します。ただし、帯域幅の使用量はさまざまな条件によって左右されます。インフラストラクチャーの共有や、帯域幅の使用で競合するアプリケーションとユーザーの数によって、その推定値は変化します。
次のように、バッファーサイズの値を変更します。
# ipadm set-prop -p recv_buf=value tcp
次の例は、バッファーサイズを 164K バイトに増やす方法を示しています。
# ipadm show-prop -p recv_buf tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp recv_buf rw 128000 -- 128000 2048-1048576 # ipadm set-prop -p recv_buf=164000 tcp # ipadm show-prop -p recv_buf tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp recv_buf rw 164000 164000 128000 2048-1048576
推奨されるバッファーサイズは状況によって異なるため、推奨設定値はありません。次の例では、固有の条件を持つネットワークごとに BDP に異なる値を設定しています。
BDP = 128 MBps * 0.001 s = 128 kB
BDP = 128 MBps * 0.1 s = 12.8 MB
BDP = 2.6 MBps * 0.175 = 470 kB
BDP を計算できない場合は、次のガイドラインに従います。
LAN 経由の一括転送では、バッファーサイズのデフォルト値は 128K バイトで十分です。
ほとんどの WAN 配備では、受信バッファーサイズは 2M バイトの範囲内にすべきです。
注意 - TCP 受信バッファーサイズを増やすと、多くのネットワークアプリケーションのメモリーフットプリントも増加します。 |