ベンダーのホワイトペーパーによると、5Mppsは問題ありません。私はすでに120kppsで壁にぶつかっています。ボトルネックはどこですか?


17

HPのQLogic(fka Broadcom)NetXtreme IIアダプターに関するホワイトペーパーには、テスト中の特定のNICが含まれており、最大256バイト/パケットまでのパケットの小さなパケットパフォーマンスは5,000,000パケット/秒を超えると述べています(7ページ)。

単なるUDP受信部分を除くすべての処理を無効にしたアプリでのテストでは、120,000パケット/秒までしか行えません。パケットは12のマルチキャストグループに均等に分散されます。

UDPの送信速度を上げると負荷が徐々に増加し、最大120,000で最大になるコア1つ(2つのソケットにそれぞれ12コア中)あることに気付きました。しかし、私はそのコアが何をしているのか、そしてその理由を知りません。私のアプリではシングルスレッドのボトルネックではありません。すべてのマルチキャストグループに対してアプリの単一のインスタンスを実行するか、それぞれ1つのマルチキャストグループを処理する12のインスタンスを実行するかは関係ないからです。そのため、ボトルネックは私のレシーバーアプリではありません。

MSIが有効になり(デバイスマネージャーの[種類ごとのリソース]ビューで確認)、NIC設定でRSSも8つのキューで有効になります。では、その1つのコアにしがみついているのは何ですか?すべてのNICオフロード機能は現在オンになっていますが、オフにすることは役に立ちませんでした。

では、ボトルネックはどこにあるのでしょうか?

システムの詳細:

  • ProLiant BL460c Gen9
  • Intel Xeon E5-2670 v3(2 x 12コア)
  • HP FlexFabric 10Gb 2ポート536FLB NIC
  • Windows 2012 R2

2
おそらく、すべてのrxおよびtx割り込みは同じコアで処理されます。私はウィンドウについてあまり知りませんが、関連するIRQを均等に分散させるために設定するSMPアフィニティがあるはずです。
ザビエルルーカス

回答:


13

RSSもNIC設定で有効になっており、8つのキューがあります。

残念ながら、RSSが採用されているという意味ではありませんでした。

netsh int tcp show global

示した:

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled

実行後(再起動せずに)

netsh int tcp set global rss=enabled

RSSが機能し始め、以前はその1つの不良コアに蓄積されていた負荷が、2つのNUMAノードの1つにある多くのコアに均等に分散されるようになりました。

通知されたMpps負荷を処理できるかどうかは確認していませんが、必要なものをベンチマークするために天井が十分に持ち上げられました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.