3

我有一台带有 2 个 Intel Xeon CPU E5-2620(Sandy Bridge)和一个 10Gbps 82599 NIC(2 个端口)的服务器,用于高性能计算。从 PCI 亲和性来看,我看到 10G 网卡连接到 CPU1。我启动了几个数据包接收线程进行实验,线程接收数据包,进行IP / UDP解析,并复制到缓冲区。我10G网卡用的驱动是IOEngine PacketShader/Packet-IO-Engine · GitHub

第一季度!空闲 CPU1 降低 CPU0 数据包接收性能

1.1) 如果 1 或 2 或 4 个线程绑定到 CPU0,所有线程的整体性能约为 2.6-3.2Gbps 1.2) 如果 2 个线程绑定到 CPU1,整体性能为 16.XGbps 1.3) 如果 4 个线程绑定到CPU1,综合性能19.XGbps(2*10G端口最大)

由于CPU0没有直接和网卡相连,看来CPU0上的最大接收速度是2.6-3.2Gbps。但是我发现如果在 CPU1 上运行一些计算密集型进程,CPU0 上的数据包接收线程在 2 个线程时提升到 15.XGbps,在 4 个线程时提升到 19.XGbps。

这是因为电源管理吗?如果CPU1空闲,它会在省电模式下运行吗?即使是这样,CPU1 又如何影响 CPU0 的性能呢?QPI有什么我不知道的吗?

第二季度!CPU1 过载会降低所有数据包接收性能

2.1)如果CPU0上运行1个收包线程,CPU1上运行1个收包线程,则综合性能为10Gbps。每个线程的性能几乎相同——5.X Gbps。2.2)如果CPU0上运行2个数据包接收线程,CPU1上运行2个数据包接收线程,综合性能为13Gbps。而且每个线程的性能几乎一样——3.X Gbps,低于2.1、1.2、1.3

简而言之,当接收到同时在 CPU0 和 CPU1 上运行的线程时,所有线程都无法发挥其最大性能,它们的性能几乎相同。

我认为关于 NUMA 和 QPI 有很多我不知道的地方,有人可以帮我解释一下吗?谢谢

4

1 回答 1

0

Q1:是的,这听起来可能是由于电源管理。QPI 具有低功耗状态,以及直接悬挂在每个处理器插槽、CPU 内核和整个处理器上的 PCIe 插槽。此处的详细信息:https ://software.intel.com/en-us/articles/power-management-states-p-states-c-states-and-package-c-states

如果您可以访问 BIOS,请尝试禁用 QPI L-states、PEG PCIe L-states 和 CPU C-states。如果这样可以解决问题,您可以取消其中一些设置,以确定哪些设置对性能下降负有最大责任。

Q2:英特尔提供了一些可能相关的 PCIe 排序规则和流控制的详细信息,但除了知道它们存在并可能限制性能之外,很难对它们做出太多回应。在任一套接字的非核心中可能存在未公开记录的类似约束。如果是其中任何一种情况,您也许可以使用 VTune 进一步挖掘,看看哪些资源正在耗尽。

在 NIC 驱动程序中使用的同步方案中,表上也可能有性能。VTune“并发”和“锁定和等待”分析类型可以帮助识别和指导修复这些问题。

于 2014-09-11T21:40:07.650 回答