【发布时间】:2015-04-03 03:14:38
【问题描述】:
当我们在一台机器上有 2 个 CPU 时,它们是否可以对称访问网卡 (PCI)?
基本上,对于数据包处理代码,每秒处理来自网卡的 14M 数据包,它在哪个 CPU 上运行有关系吗?
【问题讨论】:
-
双 CPU 的机器通常会是 SMP(对称多处理),因此两个 CPU 对网卡的访问权限相同。
-
那为什么 numactl 命令有一个例子可以在网卡的节点上运行一个进程:numactl --cpunodebind=netdev:eth4
-
也许 numactl 支持具有两个以上 CPU 的机器?
-
如果您有 2 个 CPU 插槽 (NUMA) - 那么是的,对硬件的访问是不对称的,您可以使用来自 hwloc open-mpi.org/projects/hwloc 的 lstopo 来查看 NIC 是如何连接的以及连接到哪些插槽/内核。
-
我认为区分双核和双物理CPU很重要。如果您在一个封装中有多个内核,通常每个内核都可以访问外部连接的设备(例如 PCIe 卡)。但是在真正的双 CPU 系统(有两个物理包)中,硬件设备连接到一个包或另一个包,虽然两个包之间存在高速互连 (UPI),但运行仍然会产生性能成本“远” CPU 上的代码与在“近” CPU 上运行的代码相比。
标签: performance networking cpu-architecture