performance - CPU访问是否与网卡不对称

标签 performance networking cpu-architecture

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

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

最佳答案

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

  • 来自 Jerry 的评论并非 100% 正确。虽然 NUMA 是 SMP,但不同 NUMA 节点对内存和 PCIe 资源的访问是不对称的。与主从 AMP 架构相反,它是对称的,与资源访问无关。
  • NIC 通常通过 PCIe 链接连接到 CPU(我假设你在谈论以太网/IP 的东西,而不是像 InfiniBand 这样的 HPC 互连)。 PCIe 从 CPU 链接根。例如,英特尔® 至强® 处理器 E5-2699 v4 有 30 个 PCIe v3.0 链路,而英特尔 X520 QDA-1 10Gbe 需要 4 或 8 个 PCIe v3.0 channel 来连接到 CPU。
  • 一个网卡不能同时连接两个 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
    enter image description here
  • 在同一个 NUMA 域中访问 NIC 比跨 NUMA 域访问更快。可以在 http://docplayer.net/5271505-Network-function-virtualization-virtualized-bras-with-linux-and-intel-architecture.html 中找到一些性能数字供您引用。图 12-16。
    enter image description here

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

    关于performance - CPU访问是否与网卡不对称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307151/

    相关文章:

    python - 使用Python通过套接字(端口80)连接基本访问webdata(html)

    networking - Flash/Flex 中的 UDP 实时游戏可用 开源 RTMFP 实现

    caching - 冲突小姐与强制小姐

    linux - 服务器报告 ZeroWindow 但接收缓冲区中没有数据

    memory - 在多处理器系统中,每个核心外部的内存在概念上总是平坦/统一/同步吗?

    c - 为什么我们甚至需要缓存一致性?

    c++ - 类实例指针还是函数指针?

    java - Java 中 "public static final"常量的 Clojure 等价物是什么

    java - Runtime.getRuntime().availableProcessors()

    python - Numba 数据类型错误 : Cannot unify array