惠普在其QLogic(fka Broadcom)NetXtreme II适配器上的白皮书(其中包括我正在测试的特定NIC)指出(第7页),它们对高达256字节/数据包的小数据包性能超过5,000,000数据包/秒。
在我的应用测试中,我禁用了除仅UDP接收部分之外的所有处理,我只能提高到每秒120,000个数据包。数据包平均分布在12个多播组上。
我注意到有一个核心(在2个插槽中,每个核心有12个核心),当我提高UDP发送速率时,负载会逐渐增加,最大约为120,000。但是我不知道那个核心在做什么,为什么。它不是我的应用程序中的单线程瓶颈,因为我为所有多播组运行应用程序的单个实例,还是为每个处理一个多播组的12个实例都没有关系。因此,瓶颈不是我的接收器应用程序。
启用MSI(通过设备管理器中的“按类型划分的资源”视图进行验证),并且在NIC设置中也启用RSS(具有8个队列)。那么,坚持这一核心的是什么?当前所有的NIC卸载功能都已启用,但是将其关闭并没有帮助。
那么瓶颈在哪里?
系统细节:
- ProLiant BL460c Gen9
- 英特尔至强E5-2670 v3(2 x 12核)
- HP FlexFabric 10Gb 2端口536FLB NIC
- Windows 2012 R2
2
可能所有的rx和tx中断都由同一内核处理。我对Windows知之甚少,但是应该设置一些SMP相似性以分散相关的IRQ。
—
哈维尔·卢卡斯