我在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个节点?
答案 0 :(得分:2)
正如评论中所述,NUMA需要固件支持。根据主板的不同,这可能意味着您需要在BIOS设置工具中启用它。
某些硬件,尤其是Apple的Mac Pro,没有相应的设置,NUMA控件在这些机器上不起作用。您可能能够在网上找到非官方的变通方法 - 如果您很幸运,Apple不会锁定特定于模型的寄存器(MSR)来启用它。您可以从英特尔的NUMA上找到MSR文档,并使用msr.ko
内核模块写入相关的MSR。默认情况下,所有内存访问都在两个节点之间交错。
答案 1 :(得分:0)
你可以伪造numa节点,我在单处理器系统上进行测试numa的东西
只是传递和参数到内核
numa = fake = 2将创建2个假numa节点
此处有更多信息:http://linux-hacks.blogspot.hk/2009/07/fake-numa-nodes-in-linux.html