noqqe » blog | sammelsurium | photos | projects | about

NUMA & numactl

2017-05-18 @ OS

NUMA ist sozusagen Memory und CPU Caching auf Hardware Ebene. Das kann für Produktionsdatenbanken (MySQL und MongoDB) ungünstig sein. Deswegen schaltet man das aus.

Status

Herausfinden ob NUMA aktiviert ist, lässt sich über den Kernel.

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

Manchmal ist die Meldung aber zu sehr am Anfang, weswegen man lieber im Log nachsieht.

zgrep -i numa /var/log/messages*
kernel: [    0.000000] NUMA: Node 0 [mem 0x00000000-0x0009ffff] + [mem 0x00100000-0x0fffffff] -> [mem 0x00000000-0x0fffffff]

So sieht das aus wenn NUMA aktiviert ist.

Konfiguration

Es gibt eine Tool das NUMA Einstellungen pro Prozess oder global setzen kann. Die nachfolgende Option verteilt den Memory Alloc gleichmässig auf alle Nodes.

numactl --interleave=all <path> <options>

Auf Platte persistieren kann man das deaktivierte NUMA auch via

sudo sysctl -w vm.zone_reclaim_mode=0

Details

Anzeigen der NUMA Statistiken (Cache Hits..)

cat /sys/devices/system/node/node*/numastat