TCPのチューニング
TCP
TCPのチューニング
HTTPサーバーのパフォーマンスの最適化 4-3 表
表表
表4-2 パフォーマンス・ベンチマークのためのパフォーマンス・ベンチマークのためのパフォーマンス・ベンチマークのためのパフォーマンス・ベンチマークのためのHP-UXのチューニングのチューニングのチューニングのチューニング パラメータ
パラメータパラメータ
パラメータ スコープスコープスコープスコープ デフォルト値デフォルト値デフォルト値デフォルト値 チューニング後の値チューニング後の値チューニング後の値チューニング後の値 tcp_time_wait_interval ndd/dev/tcp 60,000 60,000
tcp_conn_req_max ndd/dev/tcp 20 1,024
tcp_ip_abort_interval ndd/dev/tcp 600,000 60,000 tcp_keepalive_interval ndd/dev/tcp 7,20,00,000 900,000 tcp_rexmit_interval_initial ndd/dev/tcp 1,500 1,500 tcp_rexmit_interval_max ndd/dev/tcp 60,000 60,000
tcp_rexmit_interval_min ndd/dev/tcp 500 500
tcp_xmit_hiwater_def ndd/dev/tcp 32,768 32,768 tcp_recv_hiwater_def ndd/dev/tcp 32,768 32,768
表 表表
表4-3 Tru64 TCP/IPでチューニング可能な値でチューニング可能な値でチューニング可能な値でチューニング可能な値 パラメータ
パラメータパラメータ
パラメータ モジュールモジュールモジュールモジュール デフォルト値デフォルト値 チューニング後の値デフォルト値デフォルト値 チューニング後の値チューニング後の値チューニング後の値
tcbhashsize sysconfig -r inet 512 16,384
tcbhashnum sysconfig -r inet 1 16(5.0の場合)
tcp_keepalive_default sysconfig -r inet 0 1
tcp_sendspace sysconfig -r inet 16,384 65,535
tcp_recvspace sysconfig -r inet 16,384 65,535
somaxconn sysconfig -r socket 1,024 65,535
sominconn sysconfig -r socket 0 65,535
sbcompress_threshold sysconfig -r socket 0 600
TCPのチューニング
Linux Linux Linux
Linux でチューニング可能な設定 でチューニング可能な設定 でチューニング可能な設定 でチューニング可能な設定
Linux Linux Linux
Linux システム システム システム システム 2.1.100 2.1.100 2.1.100 2.1.100 以上でのネットワーク制約の拡張 以上でのネットワーク制約の拡張 以上でのネットワーク制約の拡張 以上でのネットワーク制約の拡張
Linuxでは、15ビットのTCPウィンドウ・フィールドのみを使用できます。 このため、すべ
てを2倍にするか、あるいはこの制約のないカーネルを再コンパイルする必要があります。
実行中のシステムのチューニング 実行中のシステムのチューニング 実行中のシステムのチューニング 実行中のシステムのチューニング
カーネル値を変更するためのsysctlアプリケーションは存在しません。 VIなどのエディタ を使用してカーネル値を変更できます。
デフォルトおよび最大サイズのチューニング デフォルトおよび最大サイズのチューニング デフォルトおよび最大サイズのチューニング デフォルトおよび最大サイズのチューニング
次にリストするファイルを編集してカーネル値を変更します。
表表表
表4-4 AIX TCPパラメータ(コマンドを使用しない場合)パラメータ(コマンドを使用しない場合)パラメータ(コマンドを使用しない場合)パラメータ(コマンドを使用しない場合)
パラメータ パラメータパラメータ
パラメータ モデルモデルモデルモデル デフォルト値デフォルト値デフォルト値デフォルト値 推奨値推奨値推奨値推奨値
rfc1323 /etc/rc.net 0 1
sb_max /etc/rc.net 65,536 131,072
tcp_mssdflt /etc/rc.net 512 1,024
ipqmaxlen /etc/rc.net 50 100
tcp_sendspace /etc/rc.net 16,384 65,536
tcp_recvspace /etc/rc.net 16,384 65,536
xmt_que_size /etc/rc.net 30 150
関連項目 関連項目関連項目
関連項目: 4-5ページの「コンパイル時のチューニング」
表表表
表4-5 Linux TCPパラメータパラメータパラメータパラメータ ファイル名
ファイル名ファイル名
ファイル名 詳細詳細詳細詳細
/proc/sys/net/core/rmem_default デフォルトの受信ウィンドウ /proc/sys/net/core/rmem_max 最大受信ウィンドウ
/proc/sys/net/core/wmem_default デフォルトの送信ウィンドウ /proc/sys/net/core/wmem_max 最大送信ウィンドウ
TCPのチューニング
HTTPサーバーのパフォーマンスの最適化 4-5 /proc/sys/net/ipv4/では、次に示すように、他にもTCPをチューニングできる部分が あります。
■ tcp_timestamps
■ tcp_windowscaling
■ tcp_sack
/Documentation/networking/ip-sysctl.txtには、TCPパラメータの簡単な説明が 記載されています。
コンパイル時のチューニング コンパイル時のチューニング コンパイル時のチューニング コンパイル時のチューニング
前述のTCPパラメータ値は、Linuxカーネルのソース・ディレクトリである
/LINUX-SOURCE-DIR/include/linux/skbuff.h内のヘッダー・ファイルで、すべてデ フォルト値が設定されています。
デフォルト値は次のとおりです。 これは実行時に設定可能です。
# ifdef CONFIG_SKB_LARGE
#define SK_WMEM_MAX 65535
#define SK_RMEM_MAX 65535
# else
#define SK_WMEM_MAX 32767
#define SK_RMEM_MAX 32767
#endif
Linuxカーネルのソース・ディレクトリ/LINUX-SOURCE-DIR/include/net/tcp.hの
MAX_WINDOW値は変更可能です。
#define MAX_WINDOW 32767
#define MIN_WINDOW 2048
MIN_WINDOWの定義により、TCPのパケット・ヘッダーで使用可能なウィンドウ・フィー ルドは15ビットに制限されます。
たとえば、40KBのウィンドウを使用する場合、rmem_defaultを40KBに設定するとしま
す。 スタックは、値が64KB未満であることを認識し、winshiftのネゴシエーションを行い
ません。 しかし、2番目のチェックにより、32KBしか確保されません。 このため、強制的に
winshift=1となるようにするには、rmem_default値を64KBより大きな値に設定する必要
があります。これにより、必要とする40KBを15ビットのみで表現できるようになります。
注意 注意注意
注意: ウィンドウの拡張を行わずに、ウィンドウに32768以上の値を割 り当てないでください。
TCPのチューニング
TCPスタックのチューニングにより、2Mbitのサテライト・リンク経由で1.5〜1.8Mbitの 間の最大スループットを実現できます(netperfで測定)。