Wir installieren SAP HANA in einem RAID- Rechner. Im Rahmen des Installationsschritts wird erwähnt, dass
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Wenn ich also anstelle der Laufzeit eine dauerhafte Änderung vornehmen möchte, sollte ich die obige Zeile in die /proc/vmstat
Datei einfügen?
Antworten:
Um Optionen wie diese permanent zu machen, fügen Sie sie normalerweise der Datei hinzu
/etc/sysctl.conf
. Mit diesem Befehl können Sie eine vollständige Liste der verfügbaren Optionen anzeigen:Beispiel
Sie können
hugepage
in der Ausgabe folgendermaßen suchen :Es ist nicht da?
Allerdings habe ich beim Durchsehen der Ausgabe nichts gesehen
transparent_hugepage
. Ein bisschen mehr googeln Ich bin auf diese Oracle-Seite gestoßen, die genau dieses Thema behandelt. Die Seite trägt den Titel: Konfigurieren von HugePages für Oracle unter Linux (x86-64) .Speziell auf dieser Seite wird erwähnt, wie die Funktion für riesige Seiten deaktiviert werden kann .
Auszug
Alternativ können Sie den Befehl zu Ihrer
/etc/rc.local
Datei hinzufügen .Ich denke, ich würde mit der 2. Option gehen, da die erste Gefahr besteht, dass sie beim Upgrade von einem Kernel auf den nächsten nicht mehr aktiviert wird.
Sie können bestätigen, dass es mit dem folgenden Befehl nach dem Neustart funktioniert hat:
quelle
cat /sys/kernel/mm/transparent_hugepage/enabled
ist[always] madvise never
, dann ist der Statusalways
oder, dass es aktiviert ist (beachten Sie die[]
Klammern umalways
)sudo update-grub
, um die neuen Einstellungen "in Stein gemeißelt" zu erhalten. +1 für das Zeigen der Grub-Dateizeile.Ich wollte diese Frage nur ergänzen, als ich versuchte, transparente riesige Seiten unter CentOS v6 zu deaktivieren, um TokuDB für MariaDB zu aktivieren. Ich habe das von @slm erwähnte Skript hinzugefügt
/etc/rc.local
und transparente Riesen-Seiten deaktiviert. Aufgrund der Funktionsweise von Startskripten unter Linux wird sie/etc/rc.local
jedoch ausgeführt, nachdem alle Dienste gestartet wurden. Aus diesem Grund wurden transparente große Seiten deaktiviert, nachdem MariaDB bereits gestartet wurde und die TokuDB-Engine nicht initialisiert wurde. Die einzige andere Möglichkeit, transparente Riesen-Seiten zu deaktivieren, ist das Hinzufügentransparent_hugepage=never
zum Kernel-Parameter.Ich bemerkte @ Rwkys Kommentar
You can make the first option survive kernel updates by adding transparent_hugepage=never to the GRUB_CMDLINE_LINUX_DEFAULT option in /etc/default/grub on most distributions.
und stellte fest, dass CentOS die/etc/default/grub
Datei nicht unterstützt und war besorgt,transparent_hugepage=never
dass sie bei der Aktualisierung aus den Kernel-Parametern verschwindet. Aber keine Sorge, CentOS ist so eingerichtet, dass Änderungen an den Kernelparametern in grub beibehalten werden, sodass sie bei einer Aktualisierung beibehalten werden.Außerdem können Sie die Kernel-Parameter für grub wie folgt ändern
grubby
: Ich habe dieses einfache Skript erstellt, umtransparent_hugepage=never
es jedem Kernel hinzuzufügengrubby
:quelle
etc/sysctl.conf
da dies konsistent auf jeden Kernel angewendet wird, der jemals auf der Box installiert wurde.grub-mkconfig
als 'root' ausführen müssen , um die eigentliche Konfigurationsdatei für grub zu generieren./etc/default/grub.d/50-cloudimg-settings.cfg
Datei ändern , anstatt sie zum Laufen/etc/default/grub
zu bringen./etc/rc.local
aber es funktioniert nicht für mich. Kannst du mir bitte den Grundfall erklären?/etc/rc.local is executed after all the services are started
, muss es auf der Kernel-Ebene deaktiviert werdenHier ist eine Implementierung mit Puppet:
quelle
All das funktionierte bei mir auf einem EC2 Ubuntu 16.04 nicht, aber das tat es:
quelle
Da die Kernel - Zeile
transparent_hugepage=never
deaktiviert nur die Hälfte von dem, was ich brauche (beide für lästige mongodb versagt / logs), dass ich nicht durchgekommen beharrensystemd
Startskript aber jetzt hat:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Das funktioniert entweder im systemctl-Boot-Skript (wenn es richtig konfiguriert ist/etc/systemd/system
) oder direkt von der Client-Konsole aus.quelle
Im Falle von Redis wird auch eine Warnung ausgegeben, die vorschlägt, THP zu deaktivieren. Aber wie im Fehlerbericht erwähnt , wird auf vielen Distributionen
/etc/rc.local
After-Services ausgeführt und es hat keine Auswirkung auf sie, bis sie neu gestartet werden . Beachten Sie auch, dass Sie in virtualisierten Umgebungen (z. B. Digitalocean) die GRUB-Einstellungen nicht steuern können.Die Lösung in einem solchen Fall ist die Verwendung eines dedizierten Init- Skripts, um transparente große Seiten, wie auf dieser Seite vorgeschlagen , durch Einstellungen zu deaktivieren
X-Start-Before
. Zum Beispiel Debian- Init- Skript für Redis:quelle
Dank github & PyYoshi habe
ich dieses Beispiel für systemd gefunden
Erstellen Sie die Datei
Fügen Sie dies in die Servicedatei ein
Für Debian / Ubuntu-Benutzer
Aktivieren Sie dann den Dienst
quelle
Wenn du auf das Problem stößt
Probieren Sie auch mit sudo die folgenden Befehle aus:
quelle
Hier ist ein kurzer Hack für Ansible (für den ich keine Vorlage verwalten möchte
/etc/rc.local
):quelle
In SLES11 SP3 mit YAST- und GRUB-Bootloader müssen wir
transparent_hugepage=never
[YAST-Bootloader-Bearbeitungszeile mit optionalem Kernel-Parameter] hinzufügen . HINWEIS: Dieses Tool ändert die Datei/boot/grub/menu.lst
.Erst nach dieser Änderung und einem Neustart wurde THP deaktiviert.
quelle
Hier ist eine weitere Marionettenlösung in der Schmiede: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Benutz einfach:
in Ihrer Puppenknotendefinition.
quelle