Evg*_*sky 18 networking performance udp windows-server-2012-r2
惠普关于其 QLogic (fka Broadcom) NetXtreme II 适配器的白皮书(其中包括我正在测试的特定 NIC)指出(第 7 页),它们对于高达 256 字节/数据包的数据包的小数据包性能高于 5,000,000 数据包/秒。
在我对一个应用程序的测试中,我禁用了除 UDP 接收部分之外的所有处理,我只能达到 120,000 个数据包/秒。数据包均匀分布在 12 个多播组上。
我注意到当我提高 UDP 发送速率并在 120,000 左右达到最大值时,有一个内核(2 个插槽上的每个内核中有 12 个内核)其负载逐渐增加。但我不知道那个核心在做什么以及为什么。这不是我的应用程序中的单线程瓶颈,因为我是否为所有多播组运行应用程序的单个实例或每个处理 1 个多播组的 12 个实例都没有关系。所以瓶颈不是我的接收器应用程序。
MSI 已启用(通过设备管理器中的“资源类型”视图进行验证)并且 RSS 也在 NIC 设置中启用,具有 8 个队列。那么是什么执着于那个核心呢?所有 NIC 卸载功能当前都处于开启状态,但将它们关闭并没有帮助。
那么瓶颈可能在哪里呢?
系统详情:
Evg*_*sky 14
RSS 也在 NIC 设置中启用,有 8 个队列。
不幸的是,这并不意味着正在使用 RSS,因为
netsh int tcp show global
Run Code Online (Sandbox Code Playgroud)
显示:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled
Run Code Online (Sandbox Code Playgroud)
运行后(顺便说一句,无需重启)
netsh int tcp set global rss=enabled
Run Code Online (Sandbox Code Playgroud)
RSS 开始工作,以前堆积在那个较差核心上的负载现在均匀分布在 2 个 NUMA 节点之一上的许多核心上。
我还没有验证这是否可以让我处理宣传的 Mpps 负载,但是天花板已经被提升到足以对我需要的东西进行基准测试。