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