Prüfen, ob Hugepages in Linux aktiviert sind
Problem:
Auf deinem Linux-System möchtest du prüfen, ob transparente Hugepages aktiviert sind.
Lösung
Es ist ganz einfach:
cat /sys/kernel/mm/transparent_hugepage/enabledDu erhältst eine Ausgabe wie diese:
always [madvise] neverDu siehst eine Liste aller möglichen Optionen (always, madvise, never), wobei die aktuell aktive Option in Klammern eingeschlossen ist. madvise ist die Standardeinstellung.
Das bedeutet, dass transparente Hugepages nur für Speicherbereiche aktiviert sind, die explizit Hugepages über madvise(2) anfordern.
always bedeutet, dass transparente Hugepages immer für jeden Prozess aktiviert sind. Dies erhöht normalerweise die Performance, aber wenn du einen Anwendungsfall mit vielen Prozessen hast, die jeweils nur eine kleine Menge Speicher verbrauchen, könnte dein gesamter Speicherverbrauch drastisch ansteigen.
never bedeutet, dass transparente Hugepages nicht aktiviert werden, selbst wenn sie über madvise angefordert werden.
Für Details siehe Documentation/vm/transhuge.txt in der Linux-Kernel-Dokumentation.
Standardwert ändern
Option 1: sysfs direkt modifizieren (die Einstellung wird nach einem Neustart auf den Standardwert zurückgesetzt):
echo always >/sys/kernel/mm/transparent_hugepage/enabled
echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/enabledOption 2: Systemstandard durch Neukompilieren des Kernels mit modifizierter Konfiguration ändern (nur empfohlen, wenn du sowieso einen eigenen benutzerdefinierten Kernel verwendest):
Um den Standard auf always zu setzen, setze diese Optionen:
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# Auskommentieren: CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=yUm den Standard auf madvise zu setzen, setze diese Optionen:
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
# Auskommentieren: CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y