Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第9章 ネットワーク

ネットワークサブシステムは、精度の高い接続で多くの異なるパーツから形成されています。したがって Red Hat Enterprise Linux 7 のネットワークはほとんどの作業に最適なパフォーマンスを提供し、またそのパフォーマンスを自動的に最適化するよう設計されています。このため通常は手作業によるネットワークパフォーマンスのチューニングは必要ありません。本章では実用的なネットワーク構成のシステムに適用可能な最適化について説明しています。
ネットワークパフォーマンスの問題は、ハードウェアの誤作動やインフラストラクチャーの障害が原因であることがあります。これらの問題の解決については、本書では扱いません。

9.1. 留意事項

チューニングに関して適切な決定をするには Red Hat Enterprise Linux のパケット受信について十分に理解しておく必要があります。本セクションではネットワークパケットの受信と処理について、また障害が発生しやすい箇所について説明しています。
Red Hat Enterprise Linux システムへ送信されるパケットはネットワークインターフェースカード (NIC) で受信され、内蔵ハードウェアバッファまたはリングバッファのいずれかに置かれます。次に NIC によりハードウェア割り込み要求が送信され、その割り込み要求を処理するソフトウェア割り込み動作の作成が求められます。
ソフトウェア割り込み動作の一部としてパケットがバッファからネットワークスタックへ転送されます。パケットおよびネットワークの構成に応じてパケットは転送または破棄されるかアプリケーションのソケット受信キューに渡され、ネットワークスタックから削除されます。このプロセスは NIC ハードウェアバッファにパケットがなくなる、または一定のパケット数 (/proc/sys/net/core/dev_weight で指定) が転送されるまで続けられます。
Red Hat カスタマーポータルで利用可能な「Red Hat Enterprise Linux Network Performance Tuning Guide」は、Linux カーネルでのパケット受信に関する情報を含み、NIC チューニングの次の領域をカバーします。SoftIRQ ミス (netdev budget)、tuned、チューニングデーモン、numad NUMA デーモン、CPU の電源状態、割り込みの分散、一時停止フレーム、割り込みの統合、アダプターキュー (netdev バックログ)、アダプター RX および TX バッファー、アダプター TX キュー、モジュールパラメーター、アダプターオフロード、ジャンボフレーム、TCP および UDP プロトコルチューニング、ならびに NUMA ローカリティー。

9.1.1. チューニングを行う前に

ネットワークパフォーマンス関連の問題はほとんどの場合ハードウェアが正常に機能していないかったり、インフラストラクチャーが不完全であることが原因で発生します。ネットワークスタックのチューニングを行う前に、まずハードウェアおよびインフラストラチャーが期待通りに動作しているか必ず確認されることを強く推奨しています。

9.1.2. パケット受信におけるボトルネック

ネットワークスタックは大幅に自己最適化されていますが、ネットワークパケット処理中にはボトルネックとなり、パフォーマンスが低下する可能性のあるポイントが多数あります。
NIC ハードウェアバッファまたはリングバッファ
大量のパケットがドロップされるとハードウェアバッファがボトルネックとなる場合があります。破棄されたパケットについてシステムの監視に関する情報は、「ethtool」 を参照してください。
ハードウェアまたはソフトウェアの割り込みキュー
割り込みにより、レイテンシーやプロセッサーの競合が増大する可能性があります。プロセッサーが割り込みを処理する方法は、「IRQ (Interrupt Request ー 割り込み要求) の処理」 を参照してください。システムで割り込み処理を監視する方法は、「/proc/interrupts」 を参照してください。割り込み処理に影響する設定オプションは、「AMD64 および Intel 64 での割り込み親和性の設定」 を参照してください。
アプリケーションのソケット受信キュー
要求しているアプリケーションに対して多数のパケットがコピーされない場合、/proc/net/snmp の UDP 入力エラー (InErrors) が増加する場合などはアプリケーションの受信キューでのボトルネックを示しています。このエラーに関するシステムの監視に関する詳細は、「ss」 および 「/proc/net/snmp」 を参照してください。