Intel ® イーサネット 700 シリーズ
Linux パフォーマンス チューニング ガイド
NEX クラウド ネットワーキング グループ (NCNG)
改訂1.2版
2024年XNUMX月
改訂履歴
リビジョン | 日付 | コメント |
1.2 | 2024年XNUMX月 | · 追加の電源管理ガイダンスを追加しました。 · Intel* Turbo Boost を追加しました。 · ネットワークデバイスバックログを追加しました。 · プラットフォーム固有の構成とチューニングを追加しました。 · 第 4 世代 Intel* %eon* スケーラブル プロセッサーを追加しました。 · AMD EPYCを追加しました。 · システム ハードウェア機能のチェックを更新しました。 · iPerf2 を更新しました。 · iPerf3 を更新しました。 · Tx/Rx キューを更新しました。 · 割り込みモデレーションを更新しました。 · リングサイズを更新しました。 · プラットフォーム チューニングを更新しました (i40e 非固有)。 · BIOS設定を更新しました。 · C-State コントロールを更新しました。 · CPU 周波数スケーリングを更新しました。 · アプリケーション設定を更新しました。 · オペレーティング システム/カーネル設定を更新しました。 · IP 転送を更新しました。 · 低遅延を更新しました。 |
2023年XNUMX月 | このドキュメントの変更点は次のとおりです: · 関連参考文献を追加しました。 · DDP パッケージが適切にロードされていることを確認する機能を追加しました。 · iPerf2を追加しました。 · iPerf3を追加しました。 · netperf を追加しました。 · IRQ アフィニティを更新しました。 · Tx/Rx キューを追加しました。 · リングサイズを更新しました。 · ジャンボフレームを追加しました。 · アダプタ結合を追加しました。 · Intel svr-info ツールを追加しました。 |
|
1.0 | 2016年XNUMX月 | 初期リリース (Intel パブリック)。 |
導入
このガイドは、Linux 環境で Intel ® Ethernet 700 シリーズ NIC を使用して最適なネットワーク パフォーマンスを実現するための環境調整に関するガイダンスを提供することを目的としています。ネットワーク パフォーマンスを向上させる可能性のあるハードウェア、ドライバー、オペレーティング システムの状態と設定に焦点を当てています。ネットワーク パフォーマンスはさまざまな外部要因の影響を受ける可能性があることに注意してください。このガイドでは、最も一般的で影響の大きい要因についてのみ説明します。
1.1 関連文献
- Windows および Linux をサポートするすべての Intel ® イーサネット アダプターおよびデバイスのユーザー ガイド:
Intel ® イーサネット アダプターおよびデバイス ユーザー ガイド - テクニカルデータシート:
Intel ® イーサネット コントローラー X710/XXV710/XL710 データシート - すべての Intel ® Ethernet 製品用の完全な SW バンドル (すべてのドライバー、NVM、ツールなどをダウンロード):
Intel ® イーサネット アダプター コンプリート ドライバー パック - NVM (不揮発性メモリ) アップデート パッケージ:
Intel ® Ethernet ネットワーク アダプター 700 シリーズ用不揮発性メモリ (NVM) 更新ユーティリティ - サーバーから関連するハードウェアとソフトウェアの詳細を取得する Linux 用の svr-info ツール: https://github.com/intel/svr-info
- DDP テクノロジー ガイド:
Intel ® Ethernet 700 シリーズ ダイナミック デバイス パーソナライゼーション (DDP) テクノロジー ガイド
初期チェックリスト
2.1 ドライバー/ファームウェアのバージョンを更新する
ethtool -i ethx を使用してドライバー/ファームウェアのバージョンを確認します。
必要に応じて以下を更新します。
- i40e ドライバーの更新
http://sourceforge.net/projects/e1000/files/i40e%20stable/ or https:// downloadcenter.intel.com/ download/24411/Network-Adapter-Driver-for-PCI-E-40- Gigabit-Network-Connections-under-Linux - ファームウェアを更新する
https://downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel- Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 READMEを読む
既知の問題を確認し、READMEから最新の設定手順を入手してください。 file i40e ソース パッケージに含まれています。
2.3 PCI Express (PCIe) スロットが x8 であることを確認する
一部の PCIe x8 スロットは、実際には x4 スロットとして構成されています。これらのスロットは、デュアル ポートおよびクアッド ポート デバイスでフル ライン レートを実現するには帯域幅が不十分です。さらに、PCIe v3.0 対応アダプターを PCIe v2.x スロットに挿入すると、フル帯域幅が得られません。ソフトウェア デバイス ドライバーはこの状況を検出し、システム ログに次のメッセージを書き込みます。
このカードで利用できる PCI-Express 帯域幅は、最適なパフォーマンスを得るには不十分です。最適なパフォーマンスを得るには、x8 PCI-Express スロットが必要です。
このエラーが発生した場合は、アダプターを実際の PCIe v3.0 x8 スロットに移動して問題を解決してください。
2.4 システムハードウェアの機能を確認する
10 Gbps、25 Gbps、および 40 Gbps イーサネットでは、最低限の CPU およびシステム要件があります。一般的に、最新のサーバー クラスのプロセッサとプラットフォームに最適なメモリ構成があれば十分ですが、要件はワークロードによって異なります。すべてのメモリ チャネルが実装され、BIOS でメモリ パフォーマンス モードが有効になっている必要があります。CPU とメモリ構成が、ワークロードに必要なレベルのネットワーク パフォーマンスをサポートできることを確認してください。
注記
XL710 は 40 GbE コントローラです。このコントローラを使用する 2 x 40 GbE アダプタは、2 x 40 GbE ではなく、アクティブなバックアップ ポートを備えた 1 x 40 GbE です。両方のポートを含むライン レート トラフィックを使用しようとすると、内部スイッチが飽和状態になり、XNUMX つのポート間の合計帯域幅は XNUMX Gbps に制限されます。
2.4.1 カーネルブートパラメータ
Intel® Virtualization Technology for Directed I/O (Intel® VT-d) が BIOS で有効になっている場合、最適なホスト ネットワーク パフォーマンスを得るために、IOMMU をパススルー モードにすることを Intel は推奨しています。これにより、ホスト トラフィックの DMA オーバーヘッドが排除され、仮想マシン (VM) は Intel® VT-d の利点を引き続き享受できます。これは、カーネル ブート パラメータに次の行を追加することで実現されます: fommu-pt。
2.5 DDP パッケージが正しく読み込まれていることを確認する
140eaおよび140ebベースドライバは、ダイナミックデバイスパーソナライゼーション(DDP)を直接サポートしていません。700シリーズデバイスでDDPを使用するには、DDPプロが必要です。file testpmd アプリケーションで適用できます。
DDPプロの詳細についてはfiles、およびDDPプロの適用方法file 700 シリーズ デバイスで testpmd を使用する場合は、『Intel® Ethernet 700 シリーズ Dynamic Device Personalization (DDP) テクノロジー ガイド』を参照してください。
DDPプロかどうかを確認するにはfile 正常に読み込まれました:
testpmd> ddp get list 0 Profile 番号は: 1
注記
プロの場合file 番号が 0 の場合、DDP パッケージはロードされません。DDP パッケージのロード エラーが発生した場合、デバイスはデフォルトでセーフ モードになり、多くのパフォーマンス機能が使用できなくなります。DDP パッケージのロードに関連するエラーが発生すると、パフォーマンスの問題が発生します。トラブルシューティングの手順については、『Inte/* Ethernet 700 シリーズ Dynamic Device Personalization (DDP) テクノロジー ガイド』を参照してください。
ベースラインパフォーマンス測定とチューニング方法
3.1 ネットワークパフォーマンスベンチマーク
チューニング作業を開始する前に、ネットワーク パフォーマンスの適切なベースライン測定を行うことが重要です。通常、特定のアプリケーション/ワークロードのパフォーマンスの初期測定に加えて、標準のネットワーク パフォーマンス ベンチマークを使用して、ネットワーク デバイスが良好な状態であることを確認することもお勧めします。
単一システムの最適化の場合、netperf または iperf と NetPIPE はすべて、接続にストレスを与えてパフォーマンスの問題を診断できる堅牢なオープンソースの無料ツールです。
Netperf は、スループットとレイテンシの両方のテストに優れています。NetPIPE はレイテンシに特化したツールですが、あらゆる種類の環境向けにコンパイルできます。
注記
netperf の TCP_RR テストは、トランザクション/秒の値でレイテンシを返します。これは往復数です。片道のレイテンシは、次の式を使用して計算できます。
レイテンシ(usec) = (1⁄2) / [トランザクション/秒] * 1,000,000
3.1.1 iPerf2
Intel は、使いやすさと単一のアプリケーション インスタンスでの複数のスレッドのサポートのため、ほとんどのベンチマーク状況で iperf2 よりも iperf3 を推奨しています。Intel は、2G 接続の場合は 4 ~ 25 スレッド、4G 接続の場合は約 6 ~ 40 スレッドで -P オプションを使用して実行することを推奨しています。
- クライアントからサーバーへの一方向トラフィックを実行するには:サーバーコマンド例ample: iperf2 -s
クライアントコマンド例ample: iperf2 -c -P - クライアントからサーバー(およびその逆)への双方向トラフィックを実行するには、サーバーコマンドexample: iperf2 –s –p
クライアントコマンド例amp上:
iperf2 -c -p -P - 全二重または
iperf2 -c -p -P –d
注記
iperf2 の –full-duplex および -d オプションの両方を使用すると、双方向テストを実行できます。ただし、–full-duplex オプションは、特に全二重テストに重点を置いています。
注記
複数のサーバー ポートにわたって iperf2 をテストする場合、-d フラグをサーバー コマンドに追加して、同じターミナル ウィンドウからバックグラウンドですべてのサーバー セッションを実行できます。-d フラグは、サーバー コマンドがスクリプトの for ループ内に埋め込まれている場合にも使用できます。
注記
単一のストリーム/スレッドでネットワークスループットテストを実行する場合(例:ample: P1)、AMD プロセッサ、特に高帯域幅 NIC (速度が >= 25G 帯域幅の場合) では、期待どおりのスループットが得られない可能性があります。その結果、より高いスループットを実現するには、特定のコアにアプリケーションを固定する必要があります。22 ページの「アプリケーション設定」を参照してください。
3.1.2 iPerf3
iperf3を使用する場合、アプリケーションの複数のインスタンスがアドバンテージを取る必要がある。tagマルチスレッド、RSS、ハードウェア キューの e。Intel は、2G 接続の場合は 4 ~ 25 のアプリケーション セッションで実行し、4G 接続の場合は 6 ~ 40 のセッションで実行することを推奨しています。各セッションでは、-p オプションを使用して一意の TCP ポート値を指定する必要があります。
- クライアントからサーバーへの一方向トラフィックを実行するには:
サーバーコマンド例amp上:
iperf3 -s -p
クライアントコマンド例amp上:
iperf3 -c -p - クライアントからサーバーへの双方向トラフィックを実行するには(およびその逆):
サーバーコマンド例amp上:
iperf3 –s –p
クライアントコマンド例ample: iperf3 -c -p -P –-ビディル - iperf3 の複数のインスタンス (スレッド) を開始するには、for ループを使用してスレッドを TCP ポートにマッピングし、& を使用して iperf3 をバックグラウンドで実行し、複数のプロセスを並列に作成することをお勧めします。
サーバーコマンド例ample、4つのスレッドを開始します: port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; done; クライアントコマンドexample、4つのスレッドを開始 – 送信テスト port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; done; クライアントコマンドexample、4 つのスレッドを開始 - 受信テスト port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; done; 40G 接続の場合は、for ループを増やして最大 6 つのインスタンス/スレッドを作成します。
注記
単一のストリーム/スレッドでネットワークスループットテストを実行する場合(例:ample: P1)、AMDプロセッサは期待されるスループット、特に高帯域幅を提供しない可能性がある。
NIC (速度が 25G 帯域幅以上の場合)。その結果、より高いスループットを実現するには、特定のコアにアプリケーションを固定する必要があります。22 ページの「アプリケーション設定」および 26 ページの「AMD EPYC」を参照してください。
3.1.3 ネットパフォーマンス
netperf ツールは、スループットとレイテンシの両方のテストに最適です。
- netperfのTCP_STREAMテストはデバイスのスループット能力を測定します。サーバーコマンドexampファイル: netserver クライアント コマンド example: netperf -t TCP_STREAM -l 30 -H
- netperf の TCP_RR テストは、トランザクション/秒の値でレイテンシを返します。これは往復数です。-T x,x オプションを使用することをお勧めします。x はデバイスの CPU ローカルです。片道レイテンシは、次のように計算できます: レイテンシ (usec)=(1⁄2)/ [トランザクション/秒]*1,000,\ サーバー コマンド example: ネットサーバー
クライアントコマンド例ample: netperf -t TCP_RR -l 30 -H -T x,x - netperf の複数のインスタンス (スレッド) を開始するには、for ループを使用してスレッドを TCP ポートにマッピングし、& を使用してバックグラウンドで netperf を実行し、複数のプロセスを並列に作成することをお勧めします。
サーバーコマンド例ample、8つのスレッドを開始:
port=””; for i in {0..7}; do port=520$i; bash -c “netserver -L $serverIP -p $port &”; done;
クライアントコマンド例ample、8 つのスレッドを開始します: port=””; for i in {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; done;
3.2 チューニング方法
一度に 1 つのチューニング変更に焦点を当てることで、各変更がテストにどのような影響を与えるかを把握できます。チューニング プロセスを系統立てて行うほど、パフォーマンスのボトルネックの原因を特定して対処しやすくなります。
i40e ドライバー設定の調整
4.1 IRQアフィニティ
異なるネットワーク キューの割り込みが異なる CPU コアに関連付けられるように IRQ アフィニティを構成すると、特にマルチスレッド スループット テストのパフォーマンスに大きな影響を与える可能性があります。
IRQ アフィニティを設定するには、irqbalance を停止し、i40e ソース パッケージの set_irq_affinity スクリプトを使用するか、キューを手動でピン留めします。キューのピン留めを有効にするには、ユーザー空間 IRQ バランサーを無効にします。
- systemctl irqbalance を無効にする
- systemctl 停止 irqbalance
i40e ソース パッケージの set_irq_affinity スクリプトを使用する (推奨): - すべてのコアを使用するには:
[i40epackage へのパス]/scripts/set_irq_affinity -X all ethX - ローカル NUMA ソケット上のコアのみを使用する場合: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- コアの範囲を選択することもできます。タイマータスクを実行するため、cpu0 の使用は避けてください。[path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
注記
アフィニティ スクリプトは、-x オプションが指定されている場合、ピンニング プロセスの一部として送信パケット ステアリング (XPS) を有効にします。XPS が有効になっている場合、XPS を使用したカーネル バランサーによって予期しないパフォーマンスが発生する可能性があるため、Intel では irqbalance を無効にすることを推奨しています。アフィニティ スクリプトは、-X オプションが指定されている場合、XPS を無効にします。XPS を無効にして対称キューを有効にすると、Tx トラフィックと Rx トラフィックが同じキュー ペアで処理されるときに最高のパフォーマンスが達成されるワークロードに役立ちます。
Linux で対称キューを構成するには、ネットワーク インターフェイス ドライバー パラメーターを調整して、サポートされているネットワーク アダプターの対称受信キュー (Rx) と対称送信キュー (Tx) を有効にする必要があります。
注記
- 対称キューは高度なネットワーク機能であり、すべての 700 シリーズ ネットワーク アダプタまたはドライバがこれをサポートしているわけではありません。
- 対称キューを構成する前に、必要なドライバーとハードウェア サポートがあることを確認してください。
対称キューを構成するには、次の一般的な手順に従います。
- ネットワークインターフェース構成の編集 File: テキストエディタ(例:ample、vi、nano、またはgedit)を使用してネットワークインターフェース設定を編集します。 file。 file 通常、/etc/sysconfig/network-scripts/ ディレクトリの下にあり、ifcfg-ethX のような名前が付けられています。ethX はネットワーク インターフェイスの名前です。
- 対称キューパラメータを追加します。ネットワークインターフェース構成に次の行を追加します。 file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8″
- ネットワーク サービスを再起動します。
変更を加えたら、ネットワーク サービスを再起動して新しい設定を適用します。sudo systemctl restart network
手動:
-
numactl –hardware lscpu を使用して、各ノードに接続されているプロセッサを見つけます。
-
各プロセッサのビットマスクを見つけます。
- ノード0のコア11~0を想定: [1,2,4,8,10,20,40,80,100,200,400,800]
- 割り当てられているポートに割り当てられたIRQを見つけます: grep ethX /proc/interrupts IRQ値をメモします。例:ample、ロードされた 181 個のベクトルの 192-12。
- SMP アフィニティ値を対応する IRQ エントリにエコーします。これは各 IRQ エントリに対して実行する必要があることに注意してください: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity IRQ アフィニティを表示します:
- すべてのコアの IRQ アフィニティを表示するには: /scripts/set_irq_affinity -s ethX
- ローカル NUMA ソケット上のコアのみを表示するには: /scripts/set_irq_affinity -s ローカル ethX
- コアの範囲を選択することもできます。 /scripts/set_irq_affinity -s 40-0-8,16 ethX
注記
set_irq_affinity スクリプトは、i40e ドライバー バージョン 2.16.11 以降で -s フラグをサポートします。
4.2 Tx/Rxキュー
初期化時にドライバーによって各イーサネット ポートに対して有効にされるキューのデフォルト数は、プラットフォームで使用可能な CPU の合計数と同じです。これは、多くのプラットフォームおよびワークロード構成で適切に機能します。ただし、コア数が多いプラットフォームやイーサネット ポート密度が高いプラットフォームでは、この構成によってリソースの競合が発生する可能性があります。したがって、場合によっては、システム内の各ポートのデフォルトを変更する必要がある場合があります。
Tx/Rx キューのデフォルトの数は、特定のモデルとドライバーのバージョンによって異なります。キューの数は、以下に示す ethtool -L コマンドを使用して調整できます。
注記
このような場合、Intel では、各ポートのデフォルトのキュー数を、アダプタ ポートのローカル NUMA ノードで使用可能な CPU の数以下に減らすことを推奨しています。場合によっては、ポート数の多い実装でリソースのバランスを取ろうとするときに、この数をさらに減らす必要があるかもしれません。
キュー設定を変更するには:
次の例ampleはポートを32のTx/Rxキューに設定します: ethtool -L ethX combined 32
Exampファイル出力:
ethtool -l ethX
ethX のチャネルパラメータ: 事前設定された最大値:
RX:96
TX:96
その他:1
合計: 96
現在のハードウェア設定:
RX:0
TX:0
その他:1
合計: 32
4.3 割り込みの抑制
適応型割り込みモデレーションはデフォルトでオンになっており、CPU 使用率の低さとパフォーマンスの高さのバランスの取れたアプローチを提供するように設計されています。ただし、使用ケースに合わせて割り込み設定を手動で調整してみることもできます。
0 ~ 235 マイクロ秒の範囲では、4,310 秒あたり 250,000 ~ 2 回の割り込みの有効範囲が提供されます。rx-μsecs-high の値は、同じ ethtool コマンドで rx-μsecs および tx-μsecs とは独立して設定でき、適応型割り込み調整アルゴリズムとも独立しています。基盤となるハードウェアは XNUMX マイクロ秒間隔の粒度をサポートしているため、隣接する値は同じ割り込みレートになる可能性があります。
- 適応割り込み調整をオフにするには: ethtool -C ethX adaptive-rx off adaptive-tx off
- 適応割り込み調整をオンにするには: ethtool -C ethX adaptive-rx on adaptive-tx on
一般的なチューニングを始めるのに適した場所は、84 μs、つまり約 12000 割り込み/秒です。トラフィック中に rx_dropped カウンターが実行されているのがわかる場合 (ethtool -S ethX を使用)、CPU が遅すぎるか、アダプターのリング サイズ (ethtool -G) からのバッファーが不足して 84 μs の間パケットを保持できないか、割り込み レートが低すぎる可能性があります。
- 割り込みの調整を、割り込み間の固定割り込みレート 84 μs (12000 割り込み/秒) に設定するには、次のようにします。 ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 CPU 使用率が最大になっていない場合は、次に試す値は 62 μs です。これにより、CPU の使用量は増えますが、バッファーの処理速度が速くなり、必要な記述子の数が少なくなります (リング サイズ、ethtool -G)。
- 割り込みの調整を、割り込み間の 62 マイクロ秒の固定割り込みレート (16000 割り込み/秒) に設定します。ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
トラフィック中に rx_dropped カウンタが増加する場合 (ethtool -S ethX を使用)、CPU が遅すぎるか、アダプタのリング サイズ (ethtool -G) からのバッファが十分でないか、割り込み レートが低すぎる可能性があります。CPU 使用率が最大に達していない場合は、ITR 値を下げて割り込み レートを上げることができます。これにより CPU の使用量は増えますが、バッファの処理速度が速くなり、必要な記述子の数が少なくなります (リング サイズ、ethtool -G)。
CPU が 100% の場合、割り込み率を上げることはお勧めできません。CPU にバインドされたワークロードなどの特定の状況では、他のアプリケーションに CPU 時間を割り当てるために μs 値を増やす必要がある場合があります。
低レイテンシのパフォーマンスが必要な場合や、ネットワーク処理に十分な CPU を割り当てる必要がある場合は、割り込み調整を完全に無効にして、割り込みを可能な限り高速に発生させることができます。 - 割り込みモデレーションを無効にするには、ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
注記
割り込みモデレーションを無効にして実行している場合、各キューの割り込みレートが非常に高くなる可能性があります。割り込みレートの上限を設定するために、rx-usec-high パラメータを含めることを検討してください。次のコマンドは、適応型割り込みモデレーションを無効にし、受信または送信が完了したことを示すまでに最大 5 マイクロ秒を許可します。200,000 秒あたり最大 50,000 回の割り込みが発生する代わりに、rx-usec-high パラメータによって 20 秒あたりの割り込みの合計数が 5 に制限されます。 # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 5 rx-usecs 80 txusecs 100 送信/受信/高優先度統合タイマーを高め (150/200/25/20) または低く (10/5/XNUMX/XNUMX) 調整して、ワークロードに最適な値を見つけてください。
4.4 リングのサイズ
ethtool -S ethX (rx_dropped、rx_dropped.nic) で rx_dropped カウンターが表示されている場合、または複数のキューがアクティブでキャッシュ負荷がかかっていると思われる場合は、リング サイズをデフォルト値から調整してみてください。デフォルト値は 512、最大値は 4096 です。
- 現在の値を確認するには: ethtool -g ethX
バッファリングの不足が現在の割り込みレートの低下を引き起こしている疑いがある場合は、最初に最大値を試し、次に最小値を試し、最適なパフォーマンスが得られるまでバイナリ検索を続行します。
キャッシュの負荷が疑われる場合 (多くのキューがアクティブ)、バッファをデフォルトより減らすと、Intel ® Data Direct I/O (Intel ® DDIO) の動作効率が向上する可能性があります。Intel では、キューごとに 128 または 256 を試すことを推奨していますが、rx_dropped の増加を回避するには、ethtool -C による割り込み率の増加が必要になる場合があることに注意してください。 - リングサイズを固定値に設定するには: ethtool -G eth12 rx 256 tx 256
注記
ethtool -S ethX|grep drop で見つかった Rx パケット ドロップを修正するには、リング サイズを 4096 に増やすことを検討してください。ワークロードに最適な設定を見つけるために実験してください。ただし、値を大きくするとメモリが過剰に使用されるので注意してください。
4.5フロー制御
レイヤー 2 フロー制御は TCP パフォーマンスに大きく影響する可能性があるため、ほとんどのワークロードでは無効にすることをお勧めします。例外となる可能性があるのは、バーストの持続時間が長くないバースト トラフィックです。
フロー制御はデフォルトで無効になっています。
- フロー制御を有効にするには: ethtool -A ethX rx on tx on
- フロー制御を無効にするには: ethtool -A ethX rx off tx off
注記
フロー制御を正常に有効にするには、フロー制御対応のリンク パートナーが必要です。
4.6 ジャンボ フレーム
予想されるトラフィック環境が、転送されるデータの大きなブロックで構成されている場合、ジャンボ フレーム機能を有効にすると効果的です。ジャンボ フレームのサポートは、最大転送単位 (MTU) をデフォルト値の 1500 より大きい値に変更することで有効になります。これにより、デバイスはネットワーク環境内でより大きなパケットでデータを転送できます。この設定により、スループットが向上し、大規模な I/O ワークロードの CPU 使用率が低下する可能性があります。ただし、小さなパケットや遅延の影響を受けやすいワークロードには影響する可能性があります。
注記
ジャンボ フレームまたはより大きな MTU 設定をネットワーク環境全体で適切に構成する必要があります。
MTUサイズを増やすには、ifconfigコマンドを使用します。例:ample、以下を入力します。インターフェース番号: ifconfig mtu 9000 アップ
あるいは、次のようにipコマンドを使用することもできます: ip link set mtu 9000 dev IPリンクセットアップ開発
プラットフォームのチューニング (i40e 非固有)
5.1 BIOS 設定
- 仮想化ワークロード用に Intel® VT-d を有効にします。
- ハイパースレッディング (論理プロセッサ) はパフォーマンスに影響を与える可能性があります。ワークロードに応じてオンまたはオフにして試してみてください。
- Intel® Turbo Boost を使用すると、CPU コアは CPU の基本周波数よりも高い周波数で動作できます。Intel® Turbo Boost を有効にすると、多くのワークロードのパフォーマンスが向上しますが、コアを高い周波数に保つためにより多くの電力を消費します。ワークロードに対して Turbo Boost のオン/オフを試してください。
注記
プラットフォーム全体の CPU 使用率が高い場合、ターボ周波数は保証されません。全体的な CPU 使用率が上がると、コア ターボ周波数は低下します。
5.2 電源管理
電源管理は、特に低レイテンシのワークロードではパフォーマンスに影響を与える可能性があります。消費電力の削減よりもパフォーマンスを優先する場合は、Intel では電源管理の影響を制限することを推奨しています。電源管理を制限するには、オペレーティング システム ツール、BIOS 設定、カーネル ブート パラメータなど、さまざまな方法があります。環境に合わせて最適な方法とレベルを選択してください。
5.2.1 Cステート制御
C 状態エントリを CO または C1 に制限すると、パフォーマンスが向上し、電力使用率が向上します。
CPU パッケージ C6 状態エントリを無効にすると、ネットワーク パフォーマンスが向上します。ただし、これにより電力使用量が増加します。
利用可能なオプションは次のとおりです。
- C ステート エントリを動的に制御します。
開ける
/dev/cpu_dma_latency に最大許容レイテンシを書き込みます。
注記
cpudmalatency.c という小さなプログラムがあり、これをオープンソース コミュニティからダウンロードしてコンパイルし、コマンド ラインから実行すると、まさにこれを実行できます。
次の例ampleは1μsのウェイク時間を許可し、C5エントリを許可します: cpudmalatency XNUMX &
- カーネルブート設定で最大 C ステートを制限します。
Intel CPU の場合: intel_idle.max_cstates=1
Intel以外のCPUの場合:processor.max_cstates=1 - cpupowerコマンドを使用してCPU C6の状態を確認し、無効にします。チェック:cpupower monitorまたはcpupoweridle-info
C6を無効にする: cpupower idol-set -d3または
C-Statesを無効にする: cpupower idol-set -D0
注:
- サーバーに Intel® 第 4 世代 Intel® Xeon® スケーラブル プロセッサーが搭載されている場合は、CPU の C ステートを無効にします。ハイパー スレッディングが有効または無効になっている場合、アイドル状態を無効にすると (-D0)、アイドル期間中にコアが低電力状態に入るのを防ぎ、CPU がアイドル状態とアクティブ状態の間を移行する際の待ち時間を短縮します。
- Intel®第4世代Intel®Xeon®スケーラブル・プロセッサーの電力管理は非常に積極的です。コアが低電力状態にならないようにするには、使用中のコアの数を減らして、コアが長時間起動している状態にしてください(ethtool -L組み合わせた)。また、set irq affinity (多くの場合、-x local または CPU コアのリストを使用) を使用して割り込みを特定のコアにバインドし、taskset または numactl を使用してワークロードが同じコアで実行されるようにします。これにより、コアをアクティブに保ち、割り込み処理を最適化することでパフォーマンスが向上します。
C6 を有効にする:
cpupower アイドルセット -d3
C-States を有効にする:
cpupower アイドルセット -E
- もう一つの方法は、チューニングツール(多くのLinuxディストリビューションに含まれています)を利用してパフォーマンスプロを設定することです。file。これらのプロはfile多くのアプリケーションのパフォーマンスに影響を与える可能性のあるいくつかのOS設定を変更します。ネットワークスループットプロfile ほとんどのワークロードを改善します。
チェック:
チューニングされたadmアクティブ
セット:
チューニングされたADMプロfile ネットワークスループット
注記
上記のコマンドを実行するには、Tuned サービスが実行されている必要があります。tuned を確認/再起動するには、systemctl statustunedsystemctl restarttuned を実行します。
カーネル ブート ラインに次のコードを追加することで、C 状態エントリを禁止することもできます。
アイドル=ポーリング - システムのBIOS電源管理設定でCステートを制限します。これによりパフォーマンスが向上する可能性があります。file 利用可能。
turbostat や x86_energy_perf_policy などのツールを使用して、電源管理設定を確認または設定できます。
5.2.2 PCIe電源管理
アクティブ ステート パワー マネジメント (ASPM) は、PCIe リンクがアクティブに使用されていないときに、低電力状態を有効にします。これにより、PCIe ネットワーク デバイスのレイテンシーが増加する可能性があるため、Intel では、レイテンシーの影響を受けやすいワークロードでは ASPM を無効にすることを推奨しています。ASPM を無効にするには、カーネル ブート ラインに次の行を追加します: pcie_aspm=off
5.2.3 CPU周波数のスケーリング
CPU 周波数スケーリング (または CPU 速度スケーリング) は、システム クロック速度をオンザフライで調整して電力と熱を節約する Linux 電源管理技術です。C ステートと同様に、これによりネットワーク接続に不要な遅延が発生する可能性があります。
cpupower ツールを使用して、CPU パフォーマンスのデフォルトと制限を確認および変更することもできます。
- チェック: cpupowerモニターまたは
- CPUをパフォーマンスモードに設定する: cpupower frequency-set -g performance
注記
CPU 周波数制限を変更すると、多くのワークロードに影響が及ぶ可能性があり、CPU ターボ モードなどの他の機能が無効になる可能性があります。
CPU 周波数スケーリングを無効にするには、次のコマンドで CPU 電源サービスを無効にします。
systemctl 停止 cpupower.service
systemctl は cpupower.service を無効にします。
5.2.4 追加の電源管理ガイダンス
詳細は、この概要に記載されています。view 第 3 世代 Intel® Xeon® スケーラブル プロセッサーの多くの電力管理機能と、これらの機能をプラットフォーム レベルで統合する方法に関するガイダンスを提供します。 https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 インテル® ターボ・ブースト
Intel® Turbo Boost は、必要に応じてプロセッサを高速化しますが、追加の電力を消費する可能性があります。Turbo Boost をオフにすると、プロセッサの速度が一定に保たれ、特定のワークロードに対して一貫したパフォーマンス レベルが得られます。
5.4 ファイアウォール
ファイアウォールはパフォーマンス、特にレイテンシパフォーマンスに影響を与える可能性があります。
必要ない場合は iptables/firewalld を無効にします。
5.5アプリケーション設定
多くの場合、単一のスレッド (単一のネットワーク キューに対応) では、最大帯域幅を達成するのに十分ではありません。AMD などの一部のプラットフォーム アーキテクチャでは、Intel ベースのプロセッサを搭載したプラットフォームと比較して、単一のスレッドでより多くの Rx パケットがドロップされる傾向があります。
アプリケーションをネットワーク デバイスのローカルの NUMA ノードまたは CPU コアに固定するには、taskset や numactl などのツールの使用を検討してください。ストレージ I/O などの一部のワークロードでは、アプリケーションをローカル以外のノードに移動するとメリットがあります。
可能であれば、アプリケーションで使用されるスレッドの数を増やして試してみてください。
5.6 カーネルバージョン
最新の同梱カーネルのほとんどはパフォーマンスが十分に最適化されていますが、使用状況によってはカーネルを更新するとパフォーマンスが向上する場合があります。ソースをダウンロードすると、カーネルをビルドする前に特定の機能を有効/無効にすることもできます。
5.7 オペレーティングシステム/カーネル設定
一般的なオペレーティング システムのチューニングの詳細については、『Red Hat Enterprise Linux ネットワーク パフォーマンス チューニング ガイド』などのオペレーティング システムのチューニング ガイドを参照してください。
調整する一般的なパラメータの一部を次の表に示します。これらはあくまでも推奨される開始点であり、デフォルトから変更するとシステムで使用されるリソースが増加する可能性があることに注意してください。値を増やすとパフォーマンスが向上しますが、特定のシステム、ワークロード、トラフィック タイプに最適な値を判断するには、さまざまな値を試す必要があります。
カーネル パラメータは、以下に示すように Linux の sysctl ユーティリティを使用して設定できます。
に view システム上の rmem と wmem のデフォルト値:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
値を最大(16 MB)に設定します。
sysctl -w net.core.rmem_max=16777216
sysctl -w ネット.コア.wmem_max=16777216
ソケット バッファ サイズ (受信バッファ (rmem) および送信バッファ (wmem) とも呼ばれる) は、受信および送信ネットワーク トラフィック用に予約されるメモリの量を指定するシステム パラメータです。
-w 引数なしで sysctl を実行すると、パラメータと現在の設定が一覧表示されます。
スタック設定 | 説明 |
ネットコアのrmem_default | デフォルトの受信ウィンドウサイズ |
ネットコア | デフォルトの送信ウィンドウサイズ |
ネットコアrmem_max | 最大受信ウィンドウサイズ |
ネットコアのwmem_max | 最大送信ウィンドウサイズ |
ネットコアオプトメモリ最大 | 最大オプションメモリバッファ |
net.core.netdev_max_backlog | カーネルがドロップを開始する前の未処理パケットのバックログ |
ネット.ipv4.tcp_rmem | TCP 読み取りバッファ用のメモリ リザーバ |
ネット.ipv4.tcp_wmem | TCP 送信バッファのメモリ予約 |
カーネル、ネットワークスタック、メモリハンドラ、CPU速度、電源管理パラメータは、ネットワークパフォーマンスに大きな影響を与える可能性があります。一般的な推奨事項は、ネットワークスループットプロに適用することです。file 調整されたコマンドを使用します。これにより、ネットワーク アプリケーションを優先するようにいくつかの OS 設定が変更されます。
チェック:
チューニングされたadmアクティブ
セット:
チューニングされたADMプロfile ネットワークスループット
5.8 ネットワークデバイスのバックログ
この機能は、着信トラフィックを効果的に管理し、パケット損失を減らし、待ち時間を短縮し、スループットを向上させることで、ネットワーク パフォーマンスの向上に役立ちます。これにより、ユーザー エクスペリエンスが向上し、システム応答が速くなります。
ほとんどの Linux オペレーティング システムではデフォルトで有効になっています。デフォルト値を確認するには:
sysctl net.core.netdev_max_backlog
netdev_max_backlog の最大値は、カーネル バージョン、ハードウェア、メモリ、ワークロードなどの要因によって異なります。多くの場合、8192 が適切な値とされています。sysctl -w net.core.netdev_max_backlog=8192
5.9 プラットフォーム固有の構成とチューニング
5.9.1 第 4 世代 Intel® Xeon® スケーラブル プロセッサー
Intel® 第 4 世代 Intel® Xeon® スケーラブル プロセッサーの電力管理は、第 3 世代 Intel® Xeon® スケーラブル プロセッサーに比べて非常に積極的です。コアが低電力状態にならないようにするには、使用中のコアの数を減らして、コアが長時間起動している状態にしてください。
最高のパフォーマンスを得るための推奨BIOS設定
- CPU 上のハイパースレッディングの有効化/無効化 (ワークロード要件とパフォーマンス目標に基づく)。
- システムプロを設定するfile パフォーマンスを最大限に高めます。
注記
その結果、消費電力が増加する - 電力効率よりも CPU パフォーマンスの最大化を優先するには、CPU 電源管理を最大パフォーマンスに設定します。
- Turbo Boost を有効にします。システム BIOS 設定で Turbo Boost を無効にすると、通常、CPU が基本周波数を超えてクロック速度を動的に増加させることができなくなります。
- 注記
一貫したパフォーマンス、電力効率、または熱管理が最大パフォーマンスよりも優先される特定のユースケースでは、Turbo Boost を無効にすることが適している場合があります。 - システムが仮想化テクノロジを利用していない場合は、シングル ルート I/O 仮想化 (SR-IOV) 機能をオフにします。
- C ステートを無効にして、CPU がアクティブな状態を維持し、より深いアイドル状態に入るのを防ぐように指示します。
- C1E を無効にして、CPU がアクティブなままになり、C1E アイドル状態にならないようにします。
- アンコア周波数を最大に設定して、システムが利用可能な最高周波数で動作するように指示します。
- Dell プラットフォームでは、CPU コアの明確で予測可能なマッピングを提供するために、Multiple APIC Description Table (MADT) コア エミュレーションを Linear (または BIOS に応じて Round-Robin) に設定します。
パフォーマンスを最適化するための推奨 OS レベルのチューニング
- CPU 周波数スケーリング ガバナーをパフォーマンスに設定します。 cpupower frequency-set -g performance cpupower frequency-info
- C-States を無効にします。 cpupower idol-set -D0
- コアの Rx (rmem) および Tx (wmem) バッファを最大値に設定します。sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- ネットワークデバイスのバックログを設定します。sysctl -w net.core.netdev_max_backlog=8192
- 調整済みプロセットfile (スループット/レイテンシはワークロードに依存します)。
チューニングされたADMプロfile ネットワークスループット
パフォーマンスを最適化するための推奨アダプタ レベルのチューニング
- アプリケーション トラフィックに使用するキューの数を制限します。関連する CPU コアがアクティブ状態を維持し、より深刻なアイドル状態にならないようにするために必要な最小限のキュー数を使用します (ワークロードに合わせて調整します)。ethtool -L合計32
- 割り込み抑制率を設定します。ethtool -Cアダプティブ RX オフ アダプティブ TX オフ rx-usecs-high 50 rx-usecs 50 tx-usecs 50
送信/受信/高優先度合体タイマーを高く (80/100/150/200) または低く (25/20/10/5) 調整して、ワークロードに最適な値を見つけてください。 - Rx/Txリングのサイズを設定します。ethtool -G rx 4096 tx 4096
注記
ethtool -S| grep drop で Rx パケットのドロップが見られる場合、リング サイズを <4096 に減らしてみてください。パケットがドロップされないワークロードの最適な値を見つけてみてください。 - IRQ アフィニティを設定します。NIC にローカルなコア、または特定のコア マッピングを使用します (コア数は 1 ページの 26 で設定したキューの数に等しくなります)。systemctl stop irqbalance set_irq_affinity -X localまたはset_irq_affinity -X
5.9.2 AMD EPYC
AMD EPYC プロセッサは、AMD の Zen アーキテクチャに基づいて構築された、サーバーやデータセンター向けの強力な CPU です。以下の設定は、AMD の第 4 世代 EPYC シリーズのものです。
最高のパフォーマンスを得るための推奨BIOS設定
- カスタム モードを有効にすると、ユーザーは CPU パフォーマンス、電力消費、その他の設定を調整できます。これにより、パフォーマンスとエネルギー効率の最適なバランスが得られるようにシステムを微調整できます。
- コア パフォーマンス ブーストを有効にすると、CPU の速度が自動的に上がり、より負荷の高いタスクを処理できるようになり、全体的なパフォーマンスが向上します。
- グローバル C ステート制御を無効にして、CPU が C ステートと呼ばれるより深い省電力状態に入るのを防ぎ、応答性を維持できるようにします。
注記
C ステートを無効にすると、電力消費量が増加し、温度が上昇する可能性があります。ワークロードの両方を監視します。 - ワークロード要件とパフォーマンス目標に基づいて、CPU の同時マルチスレッド (SMT) を有効/無効にします。SMT は、Intel CPU のハイパー スレッディングに相当します。
注記
パフォーマンスを最適化するには、推奨される OS およびアダプタ レベルのチューニングについて、40 ページの「i13e ドライバ設定のチューニング」および 40 ページの「プラットフォームのチューニング (i19e 非固有)」を参照してください。
アダプタボンディング
Linux ボンディングは、サーバー環境のネットワーク パフォーマンス、冗長性、フォールト トレランスを大幅に向上できる強力な機能です。ただし、適切に機能するには、サーバーとスイッチの両方で互換性のあるネットワーク ハードウェアと適切な構成が必要であることに注意することが重要です。
Linux のボンディング ドライバーを使用すると、複数の物理ネットワーク インターフェイスを 1 つのボンディング インターフェイスに集約できます。このボンディング インターフェイスは、オペレーティング システムとアプリケーションに対して単一の仮想ネットワーク インターフェイスとして表示されます。
注記
ボンドは論理インターフェースなので、ボンドインターフェース上でCPUアフィニティを直接設定することはできません(例:ampつまり、割り込み処理や CPU アフィニティを直接制御することはできません。CPU アフィニティは、ボンドの一部である基礎となるインターフェイスに対して構成する必要があります。
ボンディングは、それぞれ独自の特性を持つ複数の操作モードを提供します。
モード | タイプ |
0 | ラウンドロビン |
1 | アクティブバックアップ |
2 | 排他的論理和 |
3 | 放送 |
4 | LACP |
5 | 送信負荷分散 |
6 | 適応型負荷分散 |
Linuxでボンディングを作成するにはさまざまな方法があります。最も一般的な方法の1つは、ネットワーク構成を使用することです。 files(例:ample、/etc/network/interfaces または /etc/sysconfig/network-scripts/ifcfg-bondX など)。
ネットワーク構成を使用した構成 Files
次の手順では、ネットワーク構成を通じてボンディングを作成します。 files.
- ボンディングするNICポートを2つ以上選択します(例:ample、ethX、ethY)
- NIC設定を開く File必要なNICインターフェースについては、/etc/sysconfig/network-scripts/の下のsを参照してください(例:ample、vi ifcfg-ethX、vi ifcfg-ethY など) を作成し、次のテキストを追加します。
MASTER=bondN [注: N は結合番号を表す整数です。] SLAVE=yes - ボンドネットワークスクリプトを作成する file vi /etc/sysconfig/networkscripts/ifcfg-bondN を使用して、次のテキストを入力します。
DEVICE=bondN [注: N は結合番号を表す整数です] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (または) none
IPADDR=200.20.2.4 [BOOTPROTO=none の場合は必須] NETMASK=255.255.255.0 [BOOTPROTO=none の場合は必須] NETWORK=200.20.2.0 [BOOTPROTO=none の場合は必須] BROADCAST=200.20.2.255 [BOOTPROTO=none の場合は必須] BONDING_OPTS=”mode=1 miimon=100″
注記
モードは、要件に応じて 0 から 6 までの任意の整数にすることができます。 - service network restart または systemctl restart NetworkManager.service を使用してネットワーク サービスを再起動します。
パフォーマンスのトラブルシューティング
7.1 CPU使用率
ワークロードの実行中にコアごとの CPU 使用率を確認します。
コアあたりの使用率は、ネットワーク キューあたりの CPU 使用率を示すため、全体的な CPU 使用率よりもパフォーマンスとの関連性が高いことに注意してください。ネットワーク トラフィックを実行するスレッドが少数の場合、使用されているコアは少数である可能性があります。ただし、それらのコアが 100% の場合、ネットワーク スループットは CPU 使用率によって制限されている可能性があり、次の操作を実行する必要があります。
- 割り込みモデレーションで詳述されているように、IRQ モデレーション/リング サイズを調整します。
- アプリケーション スレッドの数を増やして、CPU 負荷をより多くのコアに分散します。すべてのコアが 100% で実行されている場合、アプリケーションはネットワーク バウンドではなく CPU バウンドである可能性があります。
一般的に利用可能なツール:
- トップ
— 1 を押すと CPU のリストが展開され、使用されている CPU を確認できます。
— 利用レベルに注目してください。
— どのプロセスが最もアクティブとしてリストされているか(リストの一番上)に注目してください。 - mpstat
次の例ample コマンドラインは Red Hat Enterprise Linux 7.x でテストされました。
コアごとの CPU 使用率 (アイドル状態の合計パーセントを見つけて 100 から減算) を表示し、80% を超える値を赤で強調表示します。mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column - perf top サイクルが費やされている場所を探します。
7.2 i40e カウンター
i40e ドライバーは、ethtool -S ethX コマンドを通じて、インターフェイスのデバッグと監視のためのカウンターの長いリストを提供します。ワークロードの実行中に出力を監視したり、ワークロードの実行前と実行後のカウンター値を比較したりするのに役立ちます。
- i40e カウンターの完全なダンプを取得するには: ethtool -S ethX
- ゼロ以外のカウンタだけを監視するには: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
注目すべき点: - rx_dropped は、CPU がバッファを十分な速度で処理していないことを意味します。
- port.rx_dropped は、スロット/メモリ/システムの速度が十分でないことを意味します。
7.3 ネットワークカウンタ
ワークロードの実行前/実行後に netstat -s をチェックします。
Netstat は、システム内のすべてのネットワーク デバイスからネットワーク情報を収集します。したがって、結果は、テスト対象のネットワーク以外のネットワークの影響を受ける可能性があります。netstat -s の出力は、Linux オペレーティング システムまたはカーネルのパフォーマンスの問題を示す優れた指標となります。一般的なオペレーティング システムのチューニングの詳細については、『Red Hat Enterprise Linux ネットワーク パフォーマンス チューニング ガイド』などのオペレーティング システムのチューニング ガイドを参照してください。
7.4 システムログ
システム ログでエラーと警告を確認します (/var/log/messages、dmesg)。
7.5 Intel svr-info ツール
Intelはsvr-infoツールを提供しています( https://github.com/intel/svr-info) は、Linux 用の、サーバーから関連するハードウェアとソフトウェアの詳細をキャプチャするツールです。svr-info の出力は、システムのボトルネックや、ワークロードに最適化されていない設定/チューニングを特定するのに非常に役立ちます。イーサネット関連のパフォーマンスの問題に関して Intel のサポートケースを開くときは、svr-info の出力 (テキスト file) をテスト構成内の各 Linux サーバーに対して実行します。
- svr-info をダウンロードしてインストールします。
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> ホスト名.txt - 出力を収集します。
./svr-info > ホスト名.txt - テキスト(.txt)を1つ添付します file 各サーバーを Intel サポート ケースに送って分析を依頼してください。
一般的なパフォーマンスシナリオに関する推奨事項
8.1 IP転送
- カーネルを更新します。
最近のディストリビューション内のカーネルの中には、セキュリティ上の理由からルーティング キャッシュが削除されたことをはじめ、ルーティング コードのカーネル変更によりルーティング パフォーマンスが低下しているものがあります。最近のディストリビューション外のカーネルには、これらの変更によるパフォーマンスへの影響を軽減し、パフォーマンスを向上させるパッチが含まれているはずです。 - ハイパースレッディング(論理コア)を無効にします。
- カーネルのブートパラメータを編集します。
— 仮想化に必要な場合を除き、カーネルブートラインから iommu を強制的にオフにします (intel_iommu=off または iommu=off)
— 電源管理をオフにする:processor.max_cstates=1idle=poll pcie_aspm=off - キューの数をローカルソケットのコア数(この例では12)と等しくなるように制限します。ampル)。 ethtool -L ethX 結合 12
- 割り込みをローカルソケットのみに固定します。set_irq_affinity -X local ethX または set_irq_affinity -X local ethX
注記
ワークロードに応じて -X または -x を使用できます。 - 必要に応じて Tx および Rx リングのサイズを変更します。値が大きいほど多くのリソースが必要になりますが、転送速度が向上します。ethtool -G ethX rx 4096 tx 4096
- ルーティング時に GRO を無効にします。
既知のカーネルの問題により、ルーティング/転送時に GRO をオフにする必要があります。ethtool -K ethX gro off で、ethX は変更するイーサネット インターフェイスです。 - 適応割り込みモデレーションを無効にして、静的な値を設定します。 ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
注記
プロセッサの種類とワークロードに応じて、RX と TX の結合パラメータを調整してパフォーマンスを向上 (またはフレーム損失を低減) できます。
- ファイアウォールを無効にします。sudo systemctl enable firewalld sudo systemctl stop firewalld
- IP 転送を有効にします。sysctl -w net.ipv4.ip_forward=1
- 受信および送信ソケット バッファ サイズの最大値を設定します。sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
注記
ワークロードや要件に応じて、これらの値はデフォルトから変更できます。
8.2 低レイテンシー
- ハイパースレッディング(論理コア)をオフにします。
- ネットワーク デバイスが NUMA コア 0 に対してローカルであることを確認します。
- タスクセット -c 0 を使用してベンチマークをコア 0 に固定します。
- systemctl stop irqbalance または systemctl enable irqbalance を使用して irqbalance をオフにします。
- アフィニティ スクリプトを実行してコア全体に分散します。ローカルまたはすべてを試してください。
- 割り込みの調整をオフにします。 ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- キューの数をローカルソケットのコア数と同じ数に制限します(この例では32)。ampル)。 ethtool -L ethX 結合 32
- 割り込みをローカル ソケットのみに固定します (スクリプトは i40e ドライバー ソースにパッケージ化されています)。set_irq_affinity -X local ethX
- netperf -t TCP_RR、netperf -t UDP_RR、NetPipe などの確立されたベンチマークを使用します。netperf -t TCP_RR または netperf -t UDP_RR
- ベンチマークをローカル NUMA ノードの単一コアに固定します。taskset -c
Intel ® イーサネット 700 シリーズ
Linux パフォーマンス チューニング ガイド
2024年XNUMX月
文書番号: 334019、改訂: 1.2
ドキュメント / リソース
![]() |
Intel Ethernet 700 シリーズ Linux パフォーマンス チューニング [pdf] ユーザーガイド 334019、イーサネット 700 シリーズ Linux パフォーマンス チューニング、イーサネット 700 シリーズ、Linux パフォーマンス チューニング、パフォーマンス チューニング、チューニング |