1

我在 serverfault 中问过这个问题,但一周没有回复。

我有一个双 Xeon E5522 2.26Ghz CPU(一块主板上有两个四核 CPU)。据我所知,这是一个 NUMA 架构。这台机器正在运行带有 3.2 内核的 ubuntu 服务器 12.04。

fdyn@fdyn-0:~/dev/numa_test$ uname -a
Linux fdyn-0 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64    x86_64 x86_64 GNU/Linux

内核应该是 numa-aware

fdyn@fdyn-0:~$ grep NUMA=y /boot/config-3.2.0-23-generic 
CONFIG_NUMA=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_ACPI_NUMA=y

问题是“numactl”无法识别这两个节点,它将它视为一台大型 SMP 机器。

~$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
node 0 size: 32756 MB
node 0 free: 31036 MB
node distances:
node   0 
  0:  10 

我需要整个环境都支持 NUMA,这样我就可以编写一个 numa 应用程序。¿ 忽略这一点是否安全?¿ 可以做些什么让 numactl 识别 2 个节点?

4

2 回答 2

2

如评论中所述,NUMA 需要固件支持。根据主板的不同,这可能意味着您需要在 BIOS 设置工具中启用它。

某些硬件,尤其是 Apple 的 Mac Pro,没有相应的设置,并且 NUMA 控件在这些机器上不起作用。您也许可以在网上找到非官方的解决方法——如果幸运的话,Apple 不会锁定特定型号的寄存器 (MSR) 来启用它。您也许可以从 intel 找到有关 NUMA 的 MSR 文档,并使用msr.ko内核模块写入相关的 MSR。默认情况下,所有内存访问都在两个节点之间交错。

于 2012-08-20T20:25:44.940 回答
0

你可以伪造 numa 节点,我在单处理器系统上做它来测试 numa 的东西

只需将参数传递给内核

numa=fake=2 将创建 2 个假 numa 节点

更多信息在这里: http: //linux-hacks.blogspot.hk/2009/07/fake-numa-nodes-in-linux.html

于 2015-03-13T03:54:34.477 回答