web-dev-qa-db-ja.com

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

HPの QLogic(fka Broadcom)NetXtremeIIアダプターに関するホワイトペーパー これには、私がテストしている特定のNIC)が含まれています(ページ7)256バイト/パケットまでのパケットのスモールパケットパフォーマンスが5,000,000パケット/秒を超えていること。

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

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

MSIが有効になっており(デバイスマネージャーの "resources by type"ビューで確認 )、RSSもNIC設定で有効になっています、8つのキューがあります。その1つのコアに何がしがみついているのでしょうか?すべてのNICオフロード機能は現在オンになっていますが、オフにしても効果はありませんでした。

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

システムの詳細:

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

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

13