首先,我们来检查一下我是否掌握了基本原理:
据我了解,NUMA系统是NUMA 节点的(不对称)networking,NUMA 节点通常(但不总是)物理CPU包。 在NUMA系统中,每个节点都有自己的本地存储器,其他节点的存储器可以通过总线访问。 networking的不均匀性意味着获取外部存储器会根据存储器提取中涉及的两个节点的位置而产生不同的成本。
现在,假设我做对了,这里是一个真正的Linux系统的输出。
内核支持NUMA(至less有编译支持):
$ 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总线上只有一条path,从节点0到节点0(有趣的是距离10,而不是0)。 这意味着所有的存储器访问至less在NUMA延迟方面具有相同的成本。
所以,由于只有一个NUMA节点,这是一个普通的SMP机器,没有NUMA能力,对吗? 我想是这样。
谢谢。
现代x86 CPU架构(AMD Opteron及更高版本以及基于Intel Nehalem的Xeon及更高版本)均支持NUMA ,但不一定需要以NUMA模式工作。
在您的具体情况下,您有一个NUMAfunction的CPU作为单个节点工作,因此不会检测到NUMA行为 。