CPU访问网卡是否不对称

Is CPU access asymmetric to Network card

当我们在一台机器上有 2 个 CPU 时,它们是否可以对称访问网卡 (PCI)?

本质上,对于数据包处理代码,每秒处理来自网卡的 14M 数据包,它在哪个 CPU 上运行有关系吗?

不确定您是否还需要答案,但无论如何我都会 post 一个答案,以防其他人可能需要它。我假设你问的是硬件拓扑而不是 OS irq 亲和性问题。

  1. Jerry 的评论并非 100% 正确。 NUMA虽然是SMP,但是不同NUMA节点对内存和PCIe资源的访问是不对称的。它是对称的,而不是主从 AMP 架构,与资源访问无关。
  2. NIC 通常通过 PCIe link 连接到 CPU(我假设您在谈论 Ethernet/IP 东西,而不是像 InfiniBand 这样的 HPC 互连)。 PCIe link 来自 CPU 的根。例如,英特尔® 至强® 处理器 E5-2699 v4 有 30 个 PCIe v3.0 link,而英特尔 X520 QDA-1 10Gbe 需要 4 或 8 个 PCIe v3.0 通道才能连接到 CPU。
  3. 一个网卡不能同时连接两个CPU,因为PCIelink直接进入CPU。这取决于主板配置,哪个 PCIe 物理插槽连接到哪个 CPU 插槽,并且由于它是硬连线的,因此无法轻松切换。 PCIe 拓扑信息应在数据表中,或印在主板上 PCIe 插槽旁边(例如 CPU1_PCIE8、CPU2_PCIE4)。

https://www.asus.com/us/Commercial-Servers-Workstations/ESC4000_G3S/specifications/

http://www.intel.com/content/www/us/en/embedded/products/grantley/specifications.html

  1. 在同一个NUMA 域中访问NIC 比跨NUMA 域访问速度更快。可以找到一些性能数据供您参考 http://docplayer.net/5271505-Network-function-virtualization-virtualized-bras-with-linux-and-intel-architecture.html。图 12-16。

总而言之,如果可能,请始终在同一 NUMA 节点中使用带 NIC 的内核以获得最佳性能。