供应商白皮书说:5Mpps没有问题。我已经以120kpps的速度撞墙了。瓶颈在哪里?


17

惠普在其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。
哈维尔·卢卡斯

Answers:


13

NIC设置中也启用了RSS,具有8个队列。

不幸的是,这并不意味着正在使用RSS,因为

netsh int tcp show global

显示:

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

运行后(顺便说一句,无需重新启动)

netsh int tcp set global rss=enabled

RSS开始工作,以前堆积在一个不良核心上的负载现在平均分配到2个NUMA节点之一上的许多核心上。

我还没有验证是否可以处理标榜的Mpps负载,但已将天花板提升得足够高,以基准测试所需的负载。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.