LinuCレベル3 プラットフォームスペシャリスト プラットフォームの最適化 問20
プラットフォームの最適化/カーネルパラメータによるネットワーク最適化カーネルパラメータnet.ipv4.tcp_rmemに設定する3つの値(最小・デフォルト・最大)のうち、「最大」値の意味として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「プラットフォームの最適化」に対応。実際の試験問題ではありません)
- ATCPセッションで相手にアドバタイズするウィンドウサイズの上限として直接ネゴシエートされる値
- BTCPの自動チューニングによって動的に拡張できる受信ソケットバッファの上限サイズ
- Cアプリケーションがsetsockopt()のSO_RCVBUFで設定できるソケット受信バッファサイズの上限
- DソケットがTIME_WAIT状態のときに確保される受信バッファの最小サイズを保証する値
正解:B
解説
tcp_rmemの3番目の値(最大)は、TCPの自動チューニング(auto-tuning)によって動的に拡張される受信ソケットバッファの上限サイズを指定する。カーネルはネットワーク状況に応じてバッファを最小値と最大値の間で動的に調整する。
選択肢ごとの解説
- A誤り。TCPウィンドウサイズのネゴシエーションはtcp_rmemの最大値が影響するが、直接相手にアドバタイズする値として設定するものではなく、カーネルの自動チューニングが計算に使う上限値である。
- B正しい。tcp_rmemの最大値(3番目の値)はTCP自動チューニングが受信ソケットバッファを拡張できる上限で、カーネルがネットワーク状況に応じてバッファを最小値と最大値の間で動的に調整する
- C誤り。アプリケーションのsetsockopt()でSO_RCVBUFが設定できる上限を制御するのはnet.core.rmem_maxで、net.ipv4.tcp_rmemの最大値とは別の設定。
- D誤り。TIME_WAIT状態のソケットのバッファを保証する機能はtcp_rmemの役割ではない。tcp_rmemの最小値は、メモリプレッシャー下でも確保が保証されるバッファサイズを指す。