Вопрос

i have asked this question in serverfault but had no response for one week.

I have a dual Xeon E5522 2.26Ghz CPU (two quad-core CPUs in one motherboard). From what i know this is a NUMA architecture. The machine is running ubuntu server 12.04 with 3.2 kernel.

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

The kernel is supposed to be 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

The problem is that "numactl" does not recognize the two nodes, it sees it as one big SMP machine.

~$ 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 

I need the whole enviroment to be NUMA-aware so i can program a numa application then. ¿is it safe to ignore this? ¿what can be done so that numactl recognizes the 2 nodes?

Это было полезно?

Решение

As established in the comments, NUMA requires firmware support. Depending on the motherboard, this can mean you need to enable it in the BIOS setup tool.

Some hardware, notably Apple's Mac Pro, don't have a corresponding setting, and NUMA controls don't work on these machines. You might be able to find unofficial workarounds on the web - if you're lucky, Apple doesn't lock down the model-specific registers (MSR) for enabling it. You might be able to find MSR documentation on NUMA from intel and write to the relevant MSR using the msr.ko kernel module. By default, all memory accesses are interleaved across the two nodes.

Другие советы

you can fake numa nodes, i do it on single processor systems to test numa stuff

just pass and argument to kernel

numa=fake=2 will create 2 fake numa nodes

more info here: http://linux-hacks.blogspot.hk/2009/07/fake-numa-nodes-in-linux.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top