供应商白皮书称:5Mpps 没问题。我已经在 120kpps 时遇到瓶颈了。瓶颈在哪里?

供应商白皮书称:5Mpps 没问题。我已经在 120kpps 时遇到瓶颈了。瓶颈在哪里?

HP 的关于其 QLogic (fka Broadcom) NetXtreme II 适配器的白皮书包括我正在测试的特定 NIC,声明(第 7 页)对于高达 256 字节/包的小数据包性能高于 5,000,000 数据包/秒。

在我测试的一个应用中,我禁用了除 UDP 接收部分之外的所有处理,最高只能达到 120,000 个数据包/秒。数据包均匀分布在 12 个多播组中。

我注意到一个核心(2 个插槽上各有 12 个核心)当我提高 UDP 发送速率时,负载会逐渐增加,最多约为 120,000。但我不知道该核心在做什么以及为什么这样做。这不是我的应用程序中的单线程瓶颈,因为无论我为所有多播组运行应用程序的单个实例,还是运行 12 个实例(每个实例处理 1 个多播组),都无关紧要。因此瓶颈不在我的接收器应用程序。

MSI 已启用(通过设备管理器中的“按类型查看资源”视图) 和 RSS 也在 NIC 设置中启用,具有 8 个队列。那么什么会粘在那一个核心上呢?所有 NIC 卸载功能目前都已启用,但关闭它们并没有帮助。

那么瓶颈可能在哪里呢?

系统详细信息:

  • ProLiant BL460c Gen9
  • 英特尔至强 E5-2670 v3(2 x 12 核)
  • HP FlexFabric 10Gb 双端口 536FLB 网卡
  • Windows 2012 R2

答案1

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 开始工作,之前堆积在那个可怜的核心上的负载现在均匀分布在两个 NUMA 节点之一的多个核心上。

我还没有验证这是否能让我处理广告中所说的 Mpps 负载,但是上限已经被提升到足以对我所需要的进行基准测试。

相关内容