具有单个 NUMA 节点的计算机实际上是常规(非 NUMA)系统吗?

Edd*_*ett 3 central-processing-unit smp numa

首先,让我们检查一下我是否掌握了正确的基础知识:

据我了解,NUMA 系统是 NUMA节点的(非对称)网络,其中 NUMA 节点通常(但并非总是)物理 CPU 包。在NUMA系统中,每个节点都有自己的本地内存,其他节点的内存可以通过总线访问。网络的非一致性意味着获取外部内存会产生不同的成本,具体取决于内存获取中涉及的两个节点的位置。

现在,假设我做对了,下面是真实 Linux 系统的一些输出。

内核支持 NUMA(至少已编译支持):

$ grep NUMA /boot/config-`uname -r`
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
CONFIG_ARCH_USES_NUMA_PROT_NONE=y
# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NUMA_EMU=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_ACPI_NUMA=y
Run Code Online (Sandbox Code Playgroud)

但只有一个 NUMA 节点:

$ numactl -H
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 15955 MB
node 0 free: 5203 MB
node distances:
node   0 
  0:  10 
Run Code Online (Sandbox Code Playgroud)

另请注意,NUMA 总线上只有一条路径,从节点 0 到节点 0(有趣的是距离为 10,而不是 0)。这意味着所有内存访问至少在 NUMA 延迟方面承担相同的成本。

那么,由于只有一个 NUMA 节点,所以这是一台普通的 SMP 机器,没有 NUMA 功能,对吗?我想是这样。

谢谢。

sho*_*hok 5

现代 x86 CPU 架构(AMD Opteron 及更高版本和基于 Intel Nehalem 的 Xeon 及更高版本)支持 NUMA,但它们不一定需要在 NUMA 模式下工作。

在您的特定情况下,您有一个支持 NUMA 的 CPU 作为单个节点工作,因此不会检测到NUMA 行为。