Erfahren Sie mehr über riesige Seiten in Linux. Verstehen Sie, was riesige Seiten sind, wie Sie sie konfigurieren, wie Sie den aktuellen Status überprüfen und wie Sie sie deaktivieren.
In diesem Artikel werden wir Sie durch Details zu riesigen Seiten führen, damit Sie antworten können: Was sind riesige Seiten unter Linux? Wie kann ich riesige Seiten aktivieren / deaktivieren? Wie bestimmt man den riesigen Seitenwert? in Linux wie RHEL6, RHEL7, Ubuntu usw.
Beginnen wir mit den Grundlagen von Huge pages.
Was ist eine riesige Seite unter Linux?
Riesige Seiten sind hilfreich bei der Verwaltung des virtuellen Speichers im Linux-System. Wie der Name schon sagt, helfen sie bei der Verwaltung großer Seiten im Speicher zusätzlich zur Standard-4KB-Seitengröße. Sie können mit Huge Pages eine Seitengröße von bis zu 1 GB definieren.
Während des Systemstarts reservieren Sie Ihren Speicherbereich mit riesigen Seiten für Ihre Anwendung. Dieser Speicherteil, dh dieser Speicher, der von großen Seiten belegt wird, wird niemals aus dem Speicher ausgelagert. Es bleibt dort, bis Sie Ihre Konfiguration ändern. Dies erhöht die Anwendungsleistung in hohem Maße wie Oracle-Datenbank mit ziemlich großen Speicheranforderungen.
Warum riesige Seite verwenden?
Bei der Verwaltung des virtuellen Speichers verwaltet der Kernel eine Tabelle, in der die Adresse des virtuellen Speichers einer physischen Adresse zugeordnet ist. Für jede Seitentransaktion muss der Kernel die zugehörige Zuordnung laden. Wenn Sie kleine Seiten haben, müssen Sie mehr Seiten laden, um mehr Zuordnungstabellen zu laden. Dies verringert die Leistung.
Wenn Sie große Seiten verwenden, benötigen Sie weniger Seiten. Dies verringert die Anzahl der vom Kernel zu ladenden Zuordnungstabellen erheblich. Dies erhöht die Leistung auf Kernel-Ebene, was letztendlich Ihrer Anwendung zugute kommt.
Kurz gesagt, durch die Aktivierung großer Seiten hat das System weniger Seitentabellen zu bearbeiten und somit weniger Aufwand für den Zugriff / die Wartung!
Wie konfiguriere ich riesige Seiten?
Führen Sie den folgenden Befehl aus, um die Details der aktuellen großen Seiten zu überprüfen.
root@kerneltalks # grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB
In der obigen Ausgabe können Sie sehen, dass die einseitige Größe 2 MB beträgt Hugepagesize
und insgesamt 0 Seiten auf dem System HugePages_Total
. Diese riesige Seitengröße kann von 2 MB auf maximal 1 GB erhöht werden.
Führen Sie das folgende Skript aus, um zu ermitteln, wie viele große Seiten Ihr System derzeit benötigt. Das Skript stammt von Oracle und kann gefunden werden.
#!/bin/bash## hugepages_settings.sh## Linux bash script to compute values for the# recommended HugePages/HugeTLB configuration## Note: This script does calculation for all shared memory# segments available when the script is run, no matter it# is an Oracle RDBMS shared memory segment or not.# Check for the kernel versionKERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`# Find out the HugePage sizeHPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`# Start from 1 pages to be on the safe side and guarantee 1 free HugePageNUM_PG=1# Cumulative number of pages required to handle the running shared memory segmentsfor SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "*"`do MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q` if ; then NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q` fidone# Finish with resultscase $KERN in '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`; echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;; '2.6' | '3.8' | '3.10' | '4.1' ) echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;; *) echo "Unrecognized kernel version $KERN. Exiting." ;;esac# End
Sie können es in /tmp
als hugepages_settings.sh
speichern und dann wie folgt ausführen :
root@kerneltalks # sh /tmp/hugepages_settings.shRecommended setting: vm.nr_hugepages = 124
Die Ausgabe ähnelt einer Zahl, wie in der obigen Beispielausgabe gezeigt.Dies bedeutet, dass Ihr System 124 riesige Seiten von jeweils 2 MB benötigt! Wenn Sie 4 MB als Seitengröße festgelegt haben, wäre die Ausgabe 62 gewesen. Du hast den Punkt verstanden, oder?
Riesige Seiten im Kernel konfigurieren
Der letzte Teil besteht nun darin, den oben genannten Kernel-Parameter zu konfigurieren und neu zu laden. Fügen Sie den folgenden Wert in /etc/sysctl.conf
hinzu und laden Sie die Konfiguration erneut, indem Sie den Befehl sysctl -p
.
vm.nr_hugepages=126
Beachten Sie, dass wir 2 zusätzliche Seiten im Kernel hinzugefügt haben, da wir ein paar Seiten mehr als die tatsächlich erforderliche Anzahl behalten möchten.
Jetzt wurden im Kernel riesige Seiten konfiguriert, aber damit Ihre Anwendung sie verwenden kann, müssen Sie auch die Speicherbeschränkungen erhöhen. Das neue Speicherlimit sollte 126 Seiten x jeweils 2 MB = 252 MB betragen, dh 258048 KB.
Sie müssen die folgenden Einstellungen in /etc/security/limits.conf
soft memlock 258048 hard memlock 258048
Manchmal werden diese Einstellungen in App-spezifischen Dateien konfiguriert, wie für Oracle DB in /etc/security/limits.d/99-grid-oracle-limits.conf
Das war’s! Möglicherweise möchten Sie Ihre Anwendung neu starten, um diese neuen riesigen Seiten zu nutzen.
Wie deaktiviere ich hugepages?
HugePages sind in der Regel standardmäßig aktiviert. Verwenden Sie den folgenden Befehl, um den aktuellen Status großer Seiten zu überprüfen.
root@kerneltalks # cat /sys/kernel/mm/transparent_hugepage/enabled madvise never
Flag in der Ausgabe zeigt an, dass hugepages auf dem System aktiviert sind.
Für RedHat-basierte Systeme ist der Dateipfad /sys/kernel/mm/redhat_transparent_hugepage/enabled
Wenn Sie große Seiten deaktivieren möchten, fügen Sie transparent_hugepage=never
am Ende von kernel
Zeile in /etc/grub.conf
und starten Sie das System neu.