tcp_recvspace チューニング・オプション
tcp_recvspace チューニング・オプションは、カーネル内で受信システムが受信ソケット・キューにバッファリングできるデータのバイト数を指定します。
tcp_recvspace チューニング・オプションは TCP プロトコルが TCP ウィンドウ・サイズを設定する際にも使用されます。TCP はこの TCP ウィンドウ・サイズを使用して、受信側に送信するデータのバイト数を制限し、受信側がデータをバッファーに入れるための十分なスペースを確保できるようにします。 tcp_recvspace チューニング・オプションは TCP パフォーマンスにとって重要なパラメーターです。TCP は複数のパケットをネットワークに送信して、ネットワーク・パイプラインが満杯になるようにする必要があるからです。 TCP がパイプラインに十分の量のパケットを保てないと、パフォーマンスに影響が出ます。
以下の方法で、tcp_recvspace チューニング・オプションを設定できます。
- プログラムからの setsockopt() システム・コール
- no -o tcp_recvspace=[value] コマンド
- tcp_recvspace ISNO パラメーター
tcp_recvspace チューニング・オプションを設定するときには、少なくとも MTU サイズの 1/10 の値に設定するというのが一般的な指針です。 tcp_recvspace チューニング・オプションを算出するには、帯域幅遅延の積値を 8 で除算します。次の式の計算を行います。
bandwidth-delay product = capacity(bits)= bandwidth(bits/second) x round-trip time (seconds)容量値を 8 で除算した値は、ネットワーク・パイプラインを最大限に活用するために必要な TCP ウィンドウ・サイズの見積もりに適しています。 往復遅延が長くなりネットワークの速度は速くなればなるほど、帯域幅遅延の積値は大きくなり、したがって TCP ウィンドウも大きくなります。 その一例として、100 M ビットのネットワークで往復時間が 0.2 ミリ秒の場合を考えてみましょう。 帯域幅遅延の積値は、次の式で計算できます。bandwidth-delay product = 100000000 x 0.0002 = 20000
20000/8 = 2500
このように、上の例の場合では、TCP ウィンドウ・サイズは少なくとも 2500 バイトにする必要があります。 単一の LAN に 100 M ビットやギガビット・イーサネットが使用されている環境では、tcp_recvspace と tcp_sendspace
チューニング・オプションの値を帯域幅遅延の積の計算値の少なくとも 2 から 3 倍にすると、最適なパフォーマンスが得られます。