Ich möchte transparent_hugepage (THP) auf einer CentOS 7 EC2-Instanz deaktivieren, die standardmäßig aktiviert ist:
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
Diese Einstellung kann manuell geändert werden:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
... aber die Änderungen gehen nach dem Neustart verloren.
Ich habe versucht, die echo never [...]
Anweisung in meine rc.local
und cloud.cfg
Dateien zu schreiben, aber es hat nicht funktioniert.
Ich habe auch versucht die Einstellung anhängen transparent_hugepage=never
an die Kernel - Zeile von /etc/grub.conf
(wie erklärt es ), aber es nicht besser funktionierte.
Also ... wie kann ich THP unter CentOS 7 deaktivieren, das auf einer AWS EC2-Instanz ausgeführt wird?
Bearbeiten: Titel geändert ... Ich muss THP deaktivieren und THP defragmentieren
amazon-ec2
centos7
grub
vcarel
quelle
quelle
Antworten:
Die Lösung ist abgestimmt , wie @ michael-hampton hervorhebt. Der schwierige Teil ist, dass das VM- Plugin nur die
/sys/kernel/mm/transparent_hugepage/enabled
Einstellung konfigurieren kann .Um die
/sys/kernel/mm/transparent_hugepage/defrag
Einstellung ebenfalls zu deaktivieren , musste ich ein Skript erstellen, das beim Start vom Profil aufgerufen wird.Am Ende lautet die Komplettlösung:
Schritt 1 : Erstellen Sie das Verzeichnis für das benutzerdefinierte Profil:
Schritt 2 : Erstellen Sie das Profil
/etc/tuned/custom/tuned.conf
:Beachten Sie, dass dieses Profil vom virtuellen Gast erbt , der mein aktives Profil war und tatsächlich für den virtualisierten Server (EC2) geeignet ist. Sie können Ihr aktives Profil mit dem Befehl anzeigen
tuned-adm active
. Wenn Sie neugierig sind, können Sie den Inhalt der vordefinierten Profile in überprüfen/usr/lib/tuned/
Schritt 3 : Erstellen Sie das Skript
/etc/tuned/custom/script.sh
:Machen Sie es ausführbar:
Schritt 4 : Aktivieren Sie das neue Profil:
Jetzt solltest du bekommen:
Es bleibt nach dem Neustart bestehen.
quelle
Zusätzlich zum Festlegen der Grub-Befehlszeile müssen Sie auch die Einstellung konfigurieren. Verwenden Sie jedoch nicht die Anweisungen, auf die Sie verlinkt haben, da diese so fehlerhaft sind, dass es einen halben Tag dauern würde, sie alle zu erklären.
Erstellen Sie ein benutzerdefiniertes optimiertes Profil (das ich aufrufen werde
custom
) und legen Sie dann das Profil fest.virtual-guest
Sie basieren auf einem vorhandenen Profil, z. B. wenn Sie in einer virtuellen Maschine ausgeführt werden (EC2 natürlich) oderthroughput-performance
wenn Sie sich auf einer physischen Maschine befinden.Erstellen Sie das Verzeichnis für das benutzerdefinierte Profil:
Erstellen Sie das benutzerdefinierte Profil
/etc/tuned/custom/tuned.conf
, zum Beispiel:Stellen Sie nun das Profil ein:
quelle
Versuchen Sie auch dies
quelle
Sie können die Datei /etc/rc.local bearbeiten und den folgenden Befehl zu dieser Datei hinzufügen:
und ausführen,
chmod +x /etc/rc.d/rc.local
um sicherzustellen, dass das Skript während des Startvorgangs ausgeführt wird. getestet unter Amazon Linux 2.quelle
BEARBEITEN: Die obige Antwort ist falsch , da die transparenten riesigen Seitenknöpfe im Moment in sysctl fehlen. Entschuldigung für den Lärm.
Sie können die gewünschten Werte eingeben
/etc/sysctl.conf
.Aus der Manpage sysctl.conf (5):
quelle