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

具有单个 NUMA 节点的机器实际上是常规(非 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

但只有一个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 

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

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

谢谢。

答案1

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

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

相关内容