Um Optionen wie diese dauerhaft zu machen, fügen Sie sie normalerweise der Datei /etc/sysctl.conf
hinzu . Mit diesem Befehl können Sie eine vollständige Liste der verfügbaren Optionen anzeigen:
$ sysctl -a
Beispiel
$ sudo sysctl -a | head -5
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 6000000
kernel.sched_latency_ns = 18000000
kernel.sched_wakeup_granularity_ns = 3000000
kernel.sched_shares_ratelimit = 750000
Sie können nach hugepage
suchen in der Ausgabe so:
$ sudo sysctl -a | grep hugepage
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.hugepages_treat_as_movable = 0
vm.nr_overcommit_hugepages = 0
Es ist nicht da?
Beim Durchsehen der Ausgabe habe ich jedoch transparent_hugepage
nicht gesehen . Beim Googeln bin ich auf diese Oracle-Seite gestoßen, auf der genau dieses Thema behandelt wird. Die Seite trägt den Titel:Konfigurieren von HugePages für Oracle unter Linux (x86-64).
Auf dieser Seite wird speziell erwähnt, wie man die Hugepage-Funktion deaktiviert.
Auszug
Die bevorzugte Methode zum Deaktivieren von Transparent HugePages besteht darin, "transparent_hugepage=never" zur Kernel-Boot-Zeile in der Datei "/etc/grub.conf" hinzuzufügen.
title Oracle Linux Server (2.6.39-400.24.1.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.39-400.24.1.el6uek.x86_64 ro root=/dev/mapper/vg_ol6112-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=uk
LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_DM rd_LVM_LV=vg_ol6112/lv_swap rd_LVM_LV=vg_ol6112/lv_root rhgb quiet numa=off
transparent_hugepage=never
initrd /initramfs-2.6.39-400.24.1.el6uek.x86_64.img
Damit dies wirksam wird, muss der Server neu gestartet werden.
Alternativ können Sie den Befehl zu Ihrem /etc/rc.local
hinzufügen Datei.
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
Ich denke, ich würde mich für die 2. Option entscheiden, da bei der ersten die Gefahr besteht, dass sie unscharf wird, wenn Sie von einem Kernel auf den nächsten upgraden.
Sie können nach dem Neustart mit dem folgenden Befehl bestätigen, dass es funktioniert hat:
$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
Ich wollte diese Frage nur ergänzen, da ich versuchte, transparente Hugepages auf CentOS v6 zu deaktivieren, um TokuDB für MariaDB zu aktivieren. Ich habe das von @slm erwähnte Skript zu /etc/rc.local
hinzugefügt und es hat transparente Hugepages deaktiviert. Aufgrund der Art und Weise, wie Startskripts unter Linux funktionieren, /etc/rc.local
wird ausgeführt, nachdem alle Dienste gestartet wurden. Daher wurden transparente riesige Seiten deaktiviert, nachdem MariaDB bereits gestartet war und die TokuDB-Engine nicht initialisiert werden konnte. Die einzige andere Möglichkeit, transparente Hugepages zu deaktivieren, ist das Hinzufügen von transparent_hugepage=never
zum Kernelparameter.
Mir ist @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.
aufgefallen und fand heraus, dass CentOS den /etc/default/grub
nicht unterstützt Datei und machte sich Sorgen um transparent_hugepage=never
verschwindet aus den Kernel-Parametern, wenn es aktualisiert wird. Aber keine Sorge, CentOS ist so eingerichtet, dass alle Änderungen an den Kernel-Parametern in Grub beibehalten werden, sodass sie bei einer Aktualisierung beibehalten werden.
Außerdem ist der richtige Weg, die Kernel-Parameter für Grub zu ändern, mit grubby
. Ich habe dieses einfache Skript erstellt, um transparent_hugepage=never
hinzuzufügen zu jedem Kernel mit grubby
:
#!/bin/sh
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
for KERNEL in /boot/vmlinuz-*; do
grubby --update-kernel="$KERNEL" --args='transparent_hugepage=never'
done
All dies hat bei mir auf einem EC2 Ubuntu 16.04 nicht funktioniert, aber das hier:
sudo apt install hugepages
sudo hugeadm --thp-never