Kernel numactl只检测到一个节点,它应该是两个节点

Kernel numactl只检测到一个节点,它应该是两个节点,kernel,numa,Kernel,Numa,我曾经问过这个问题,但一个星期都没有回答 我有一个双Xeon E5522 2.26Ghz CPU(一块主板上有两个四核CPU)。据我所知,这是一个NUMA架构。这台机器运行的是ubuntu服务器12.04,内核为3.2 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/

我曾经问过这个问题,但一个星期都没有回答

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

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感知的

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识别这两个节点?

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


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

您可以伪造numa节点,我在单处理器系统上这样做是为了测试numa内容

只需将参数传递给内核

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


此处的更多信息:

您是否已检查BIOS中是否已启用NUMA?有些系统,如Mac Pro,会完全禁用它,而无法启用它。其他控件仅在显式启用时才允许NUMA控件。请查看硬件制造商的文档,看是否确实支持它。正如您所指出的,这确实是一款安装了ubuntu服务器的mac pro。真的没有办法启用它吗?据我所知没有,尽管我没有Mac Pro,因此也没有尝试过。尝试谷歌搜索任何固件或MSR(型号特定寄存器)黑客。不过,我不会抱太大希望。我想苹果禁用它是因为OSX根本不支持NUMA。我会搜索你的建议,谢谢!