Question

Hopping from Java Garbage Collection, I came across JVM settings for NUMA. Curiously I wanted to check if my CentOS server has NUMA capabilities or not. Is there a *ix command or utility that could grab this info?

Was it helpful?

Solution

I'm no expert here, but here's something:

Box 1, no NUMA:

~$ dmesg | grep -i numa
[    0.000000] No NUMA configuration found

Box 2, some NUMA:

~$ dmesg | grep -i numa
[    0.000000] NUMA: Initialized distance table, cnt=8
[    0.000000] NUMA: Node 4 [0,80000000) + [100000000,280000000) -> [0,280000000)

OTHER TIPS

I think this previous question is similar: How to confirm NUMA?

In particular, you can review the NUMA man page here: http://man7.org/linux/man-pages/man7/numa.7.html

And from there you'll see:

$ find /proc -name numa_maps
/proc/1/task/1/numa_maps
/proc/1/numa_maps
/proc/2/task/2/numa_maps
/proc/2/numa_maps
/proc/3/task/3/numa_maps
[etc if you have numa]

And you can get more detail like so:

$ grep NUMA=y /boot/config-`uname -r`
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_ACPI_NUMA=y

$ numactl --hardware
available: 2 nodes (0-1)
node 0 size: 18156 MB
node 0 free: 9053 MB
node 1 size: 18180 MB
node 1 free: 6853 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10

For Redhat 4,5,6 and 7 systems, one can try the following to determine if NUMA configuration is disabled:

numactl --show does not show multiple nodes

# numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
cpubind: 0
nodebind: 0
membind: 0

or numactl --hardware does not list multiple nodes

# 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 16 17 18 19 20 21 22 23
node 0 size: 524163 MB
node 0 free: 505253 MB
node distances:
node   0
  0:  10

You can also get this info from lscpu command:

lscpu | grep -i numa
NUMA node(s):          2
NUMA node0 CPU(s):     0-19,40-59
NUMA node1 CPU(s):     20-39,60-79

You can also just query the information from /sys (this is what tools like numactl do underneath). As others pointed out, using dmesg will be unreliable since it usually does not have unlimited buffering.

To find out how many NUMA nodes are currently available, do:

cat /sys/devices/system/node/online
0-3
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top