3

私は 2 つの Intel Xeon CPU E5-2620 (Sandy Bridge) と 10Gbps 82599 NIC (2 ポート) を搭載したサーバーを持っており、これをハイパフォーマンス コンピューティングに使用しました。PCI アフィニティから、10G NIC が CPU1 に接続されていることがわかります。実験を行うためにいくつかのパケット受信スレッドを起動しました。スレッドはパケットを受信し、IP/UDP 解析を行い、バッファにコピーします。10G NIC に使用したドライバーは IOEngine PacketShader/Packet-IO-Engine · GitHub

Q1! アイドル状態の CPU1 は CPU0 のパケット受信性能を低下させます

1.1) CPU0 に 1 つまたは 2 つまたは 4 つのスレッドが結合されている場合、すべてのスレッドの全体的なパフォーマンスは約 2.6 ~ 3.2Gbps です 1.2) 2 つのスレッドが CPU1 に結合されている場合、全体的なパフォーマンスは 16.XGbps 1.3) 4 つのスレッドが結合されている場合CPU1 への全体的なパフォーマンスは 19.XGbps (2 * 10G ポートで最大)

CPU0 は NIC に直接接続されていないため、CPU0 での最大受信速度は 2.6 ~ 3.2Gbps のようです。ただし、計算集約型のプロセスが CPU1 で実行されると、CPU0 のパケット受信スレッドが 2 スレッドで 15.XGbps、4 スレッドで 19.XGbps にブーストされることがわかりました。

これは電源管理のせいですか?CPU1 がアイドル状態の場合、省電力モードで動作しますか? そうだとしても、CPU1 が CPU0 のパフォーマンスにどのように影響するのでしょうか? QPI について不明な点はありますか?

Q2!CPU1 の過負荷により、すべてのパケット受信パフォーマンスが低下する

2.1) 1 つのパケット受信スレッドが CPU0 で実行され、1 つのパケット受信スレッドが CPU1 で実行される場合、全体のパフォーマンスは 10Gbps です。各スレッドのパフォーマンスはほぼ同じで、5.X Gbps です。2.2) 2 つのパケット受信スレッドが CPU0 で実行され、2 つのパケット受信スレッドが CPU1 で実行される場合、全体のパフォーマンスは 13Gbps です。また、各スレッドのパフォーマンスはほぼ同じで、2.1、1.2、および 1.3 よりも低い 3.X Gbps です。

つまり、CPU0 と CPU1 の両方で実行されているスレッドを受信すると、すべてのスレッドが最大のパフォーマンスを達成できず、パフォーマンスはほぼ同じになります。

NUMA と QPI について知らないことがたくさんあると思いますが、これについて説明してくれる人はいますか? ありがとう

4

1 に答える 1

0

Q1: はい、電源管理が原因のようですね。QPI には低電力状態があり、PCIe スロットは各プロセッサ ソケット、CPU コア、およびプロセッサ全体から直接ぶら下がっています。詳細はこちら: https://software.intel.com/en-us/articles/power-management-states-p-states-c-states-and-package-c-states

BIOS にアクセスできる場合は、QPI L ステート、PEG PCIe L ステート、および CPU C ステートを無効にしてみてください。これで問題が解決した場合は、これらの設定の一部を元に戻して、パフォーマンスの低下の原因となっている設定を特定できます。

Q2: Intel は、PCIe の順序付け規則とフロー制御に関する詳細を提供していますが、関連する可能性がありますが、それらが存在し、パフォーマンスを制限する可能性があることを知る以外に、それらに対応することは困難です。公に文書化されていない、いずれかのソケットの uncore に同様の制約がある可能性があります。いずれかの場合は、VTune をさらに掘り下げて、どのリソースが使い果たされているかを確認できる可能性があります。

また、NIC ドライバーで使用される同期スキームのテーブルにパフォーマンスが存在する可能性もあります。VTune の「同時実行」および「ロックと待機」の解析タイプは、これらの問題を特定して修正するのに役立ちます。

于 2014-09-11T21:40:07.650 に答える