Was sind die großen Seiten in Linux?

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.

HugePages unter Linux

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.