過去問ドリル

LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問17

性能・拡張性の設計/性能の改善

データセンター間を往復遅延時間(RTT)が約20msの専用回線(帯域1Gbps)で結んでいる。大容量ファイルを一括転送するアプリケーションのスループットが回線帯域の40%程度にとどまっており、送受信サーバーのCPUとネットワーク処理に余裕があり、パケットロスも発生していない。主な原因と対策として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)

正解:D

解説

TCPは、送信バッファが埋まるとACKを待って送信を止めます。帯域遅延積(BDP = 帯域 × RTT)より送信バッファが小さい場合、バッファを使い切った時点で送信が待機状態になり、回線の帯域を使いきれません。1Gbps × 20msのBDPは約2.5MBで、Linuxの既定のnet.core.wmem_maxの値(約208KB)を大幅に超えます。net.core.wmem_maxとnet.ipv4.tcp_wmemの最大値を2.5MB以上に設定し、tcp_window_scaling(既定で有効)が働く状態にすれば、カーネルがBDPに応じてバッファを広げます。CPUに余裕があり、パケットロスも発生していない状況でスループットが出ないときは、このバッファ不足が主因として最も可能性が高いです。

選択肢ごとの解説

  • A誤り。ルーターを減らすとRTTは短くなりますが、問題文でRTTは20msと確認されています。RTTが短くなればBDPも小さくなり間接的な改善にはなりますが、送信バッファの拡大に比べると効果は限定的です。
  • B誤り。ジャンボフレームはパケットあたりのヘッダオーバーヘッドを減らし一定の改善はありますが、今回の主因(送信バッファとBDPの乖離)ではありません。また経路上の全機器での変更が必要で、変更できない区間があれば適用できません。
  • C誤り。暗号化処理がボトルネックになっている場合はCPU使用率の高騰として現れます。問題文でCPUに余裕があることが確認されているため、この原因は排除できます。
  • D正しい。BDP分のデータを常に回線に流し続けるために必要な送信バッファを確保することで、ACK待ちによる送信停止を防ぎ、帯域を使いきれるようになります。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く