Uneinheitlicher Speicherzugriff oder Non-Uniform Memory Architecture (NUMA) ist ein physisches Speicherdesign, das in der SMP-Architektur (Multiprozessoren) verwendet wird, wobei die Speicherzugriffszeit von der Speicherposition relativ zu einem Prozessor abhängt. Unter NUMA kann ein Prozessor schneller auf seinen eigenen lokalen Speicher zugreifen als auf nicht-lokalen Speicher, d. h. Speicher, der lokal zu einem anderen Prozessor gehört, oder Speicher, der von Prozessoren gemeinsam genutzt wird.
In einem NUMA-System werden Prozessoren, Speicher und E/A in Zellen gruppiert. Die Latenz- und Bandbreiteneigenschaften der Kommunikation innerhalb einer Zelle sind „schnell“, während das Verlassen einer Zelle „langsam“ ist. Da der Speicher in NUMA-Systemen physisch verteilt, aber logisch gemeinsam genutzt wird, bieten diese Systeme eine bessere Leistung für Anwendungen, die für die Verwendung ihrer Funktionen optimiert sind. Für nicht optimierte Anwendungen bieten sie immer noch eine bessere Leistung, da das Standardverhalten harmlos, wenn nicht vorteilhaft ist, und sie haben immer noch Zugriff auf viel größere gemeinsam genutzte Ressourcen von Arbeitsspeicher, CPUs und Festplattenspeicher.
NUMA deaktivieren
1. Um NUMA zu deaktivieren, fügen Sie numa=off hinzu zur Kernel-Zeile in grub.conf Datei, zum Beispiel:
a. Für RHEL 6
Bearbeiten Sie die Kernel-Zeile in /boot/grub/grub.conf Datei
# vi /boot/grub/grub.conf kernel /vmlinuz-2.6.39-400.215.10.EL ro root=/dev/VolGroup00/LogVol00 numa=off
b. Für RHEL 7
Bearbeiten Sie die Kernel-Zeile in der Datei /etc/default/grub
# vi /etc/default/grub GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_vm-210/root rd.lvm.lv=rhel_vm-210/swap vconsole.font=latarcyrheb-sun16 crashkernel=auto vconsole.keymap=us rhgb quiet numa=off
Stellen Sie außerdem sicher, dass Sie die GRUB-Konfigurationsdatei mit dem folgenden Befehl im Fall von RHEL/CentOS 7 neu erstellen.
# grub2-mkconfig -o /etc/grub2.cfg
2. Starten Sie den Server neu, damit die Änderungen wirksam werden.
# shutdown -r now
Bestätigen
Überprüfen Sie nach dem Neustart die Datei /proc/cmdline, um die verwendeten GRUB-Befehlszeilenoptionen anzuzeigen. (Das Beispiel unten stammt von RHEL 6).
# cat /proc/cmdline ro root=/dev/VolGroup00/LogVol00 numa=off
# numactl -H available: 1 nodes (0) node 0 size: 4195 MB node 0 free: 3304 MB node distances: node 0 0: 10
Wenn NUMA aktiv wäre, wäre mehr als ein Knoten aufgelistet.