我已经在serverfault中问过这个问题,但一周来没有任何回应。
我有一个双至强E5522 2.26 one (一个主板上有两个四核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感知的
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个节点?
发布于 2012-08-21 04:25:45
如评论中所述,NUMA需要固件支持。根据主板的不同,这可能意味着您需要在BIOS设置工具中启用它。
一些硬件,特别是苹果的Mac Pro,没有相应的设置,NUMA控制在这些机器上不起作用。你也许可以在网络上找到非官方的变通方法--如果你幸运的话,苹果不会锁定特定型号的寄存器(MSR)来启用它。您也许能够从英特尔找到有关NUMA的MSR文档,并使用msr.ko内核模块写入相关的MSR。默认情况下,所有内存访问都是跨两个节点交错进行的。
发布于 2015-03-13 11:54:34
你可以伪造numa节点,我在单处理器系统上这样做是为了测试numa
只需将and参数传递给内核
numa=fake=2将创建2个伪numa节点
更多信息请点击此处:http://linux-hacks.blogspot.hk/2009/07/fake-numa-nodes-in-linux.html
https://stackoverflow.com/questions/12041953
复制相似问题