【问题标题】:Is CPU access asymmetric to Network cardCPU 访问是否与网卡不对称
【发布时间】: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


【解决方案1】:

不确定您是否仍然需要答案,但无论如何我都会发布答案以防其他人可能需要它。我假设您询问的是硬件拓扑而不是操作系统 irq 关联性问题。

  1. Jerry 的评论并非 100% 正确。虽然 NUMA 是 SMP,但不同 NUMA 节点对内存和 PCIe 资源的访问是不对称的。与主从 AMP 架构相反,它是对称的,与资源访问无关。
  2. NIC 通常通过 PCIe 链路连接到 CPU(我假设您在谈论以太网/IP 的东西,而不是像 InfiniBand 这样的 HPC 互连)。 PCIe 从 CPU 链接根。例如,英特尔® 至强® 处理器 E5-2699 v4 有 30 个 PCIe v3.0 链路,而英特尔 X520 QDA-1 10Gbe 需要 4 或 8 个 PCIe v3.0 通道来连接到 CPU。
  3. 一个 NIC 不能同时连接到两个 CPU,因为 PCIe 链接直接进入 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 的内核以获得最佳性能。

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 2011-09-03
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多