Führen Sie die folgenden Schritte aus, um HugePages schnell unter Linux zu konfigurieren

Führen Sie die folgenden Schritte aus, um HugePages schnell unter Linux zu konfigurieren

Vorwort

Bezüglich der HugePages- und Oracle-Datenbankoptimierung von Linux-Systemen können Sie den vorherigen Artikel von Xiong Ye lesen, der die relevanten Konzepte sehr klar vorstellt:

Optimierung der Oracle-Datenbank für große Speicherseiten unter Linux

Dieser Artikel zielt darauf ab, HugePages schnell auf einem Linux-System zu konfigurieren

Testumgebung: RHEL6.8 + 512G physischer Speicher; Oracle 11.2.0.4 SGA=400G.

1. Memlock auf unbegrenzt setzen

Setzen Sie in der Konfigurationsdatei /etc/security/limits.conf den Oracle-Benutzer Memlock auf unbegrenzt:

vi /etc/security/limits.conf

Oracle Soft Memlock unbegrenzt
Oracle Hard Memlock unbegrenzt

2. Setzen Sie angemessene vm.nr_hugepages

Legen Sie in der Konfigurationsdatei /etc/sysctl.conf einen sinnvollen vm.nr_hugepages-Wert fest.

Führen Sie das von MOS 401749.1 bereitgestellte Skript hugepages_settings.sh aus, um die empfohlenen Werte direkt zu erhalten.

Inhalt des Skripts „hugepages_settings.sh“:

#!/bin/bash
#
# riesigepages_settings.sh
#
# Linux Bash-Skript zum Berechnen von Werten für die
# empfohlene HugePages/HugeTLB-Konfiguration
# auf Oracle Linux
#
# Hinweis: Dieses Skript führt Berechnungen für den gesamten gemeinsam genutzten Speicher durch
# Segmente verfügbar, wenn das Skript ausgeführt wird, unabhängig davon
# ist ein gemeinsam genutztes Speichersegment von Oracle RDBMS oder nicht.
#
# Dieses Skript wird bereitgestellt durch Doc ID 401749.1 von My Oracle Support 
# http://support.oracle.com

# Begrüßungstext
Echo "
Dieses Skript wird bereitgestellt durch Doc ID 401749.1 von My Oracle Support 
(http://support.oracle.com), wo es zur Berechnung von Werten für vorgesehen ist 
die empfohlene HugePages/HugeTLB-Konfiguration für den aktuellen Shared 
Speichersegmente unter Oracle Linux. Bevor Sie mit der Ausführung fortfahren, beachten Sie bitte Folgendes:
* Für die ASM-Instanz muss ASMM statt AMM konfiguriert werden.
* Das 'pga_aggregate_target' liegt außerhalb des SGA und 
Sie sollten dies bei der Berechnung der SGA-Größe berücksichtigen.
* Falls Sie die DB SGA-Größe ändern, 
da die neue SGA nicht in die bisherige HugePages-Konfiguration passt, 
es wäre besser, die ganzen HugePages zu deaktivieren, 
Starten Sie die Datenbank mit neuer SGA-Größe und führen Sie das Skript erneut aus.
Und stellen Sie Folgendes sicher:
* Oracle-Datenbankinstanz(en) sind aktiv und betriebsbereit
* Oracle Database 11g Automatic Memory Management (AMM) ist nicht eingerichtet 
(Siehe Dokument-ID 749851.1)
* Die gemeinsam genutzten Speichersegmente können mit folgendem Befehl aufgelistet werden:
# ipcs -m


Drücken Sie die Eingabetaste, um fortzufahren …“

lesen

# Überprüfen Sie die Kernelversion
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

# Ermitteln Sie die HugePage-Größe
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`
wenn [ -z "$HPG_SZ" ];dann
echo "Die Hugepages werden möglicherweise auf dem System, auf dem das Skript ausgeführt wird, nicht unterstützt."
Ausfahrt 1
fi

# Initialisieren Sie den Zähler
NUM_PG=0

# Kumulative Anzahl der Seiten, die zum Verarbeiten der ausgeführten gemeinsam genutzten Speichersegmente erforderlich sind
für SEG_BYTES in `ipcs -m | cut -c44-300 | awk '{print $1}' | grep "[0-9][0-9]*"`
Tun
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
wenn [ $MIN_PG -gt 0 ]; dann
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
fi
Erledigt

RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`

# Ein SGA kleiner als 100MB macht keinen Sinn
# Wenn das der Fall ist, springen Sie ab
wenn [ $RES_BYTES -lt 100000000 ]; dann
Echo "************"
echo "** FEHLER **"
Echo "************"
echo "Entschuldigung! Es sind nicht genügend gemeinsame Speichersegmente zugewiesen für 
HugePages-Konfiguration. HugePages können nur für gemeinsam genutzte Speichersegmente verwendet werden 
die Sie per Befehl auflisten können:

# ipcs -m

einer Größe, die mit einem Oracle Database SGA mithalten kann. Bitte stellen Sie Folgendes sicher:
* Die Oracle-Datenbankinstanz ist einsatzbereit 
* Oracle Database 11g Automatic Memory Management (AMM) ist nicht konfiguriert"
Ausfahrt 1
fi

# Mit Ergebnissen abschließen
Fall $KERN in
'2.2') echo "Kernelversion $KERN wird nicht unterstützt. Wird beendet." ;;
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "Empfohlene Einstellung: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') echo "Empfohlene Einstellung: vm.nr_hugepages = $NUM_PG" ;;
'3.8') echo "Empfohlene Einstellung: vm.nr_hugepages = $NUM_PG" ;;
'3.10') echo "Empfohlene Einstellung: vm.nr_hugepages = $NUM_PG" ;;
'4.1') echo "Empfohlene Einstellung: vm.nr_hugepages = $NUM_PG" ;;
esac

# Ende

Führen Sie einfach das Skript aus, um die entsprechenden Vorschläge zu erhalten:

--Wenn Sie eine Instanz mit SGA_MAX_SIZE=12G starten, finden Sie folgende Vorschläge:
Empfohlene Einstellung: vm.nr_hugepages = 6148

--Wenn Sie eine Instanz mit SGA_MAX_SIZE=400G starten, finden Sie folgende Vorschläge:
Empfohlene Einstellung: vm.nr_hugepages = 204805

--Wenn die Instanz nicht gestartet wird, wird eine Fehlermeldung angezeigt:
***********
** FEHLER **
***********
Es sind nicht genügend gemeinsam genutzte Speichersegmente zugewiesen für 
HugePages-Konfiguration. HugePages können nur für gemeinsam genutzte Speichersegmente verwendet werden 
die Sie per Befehl auflisten können:

# ipcs -m

einer Größe, die mit einem Oracle Database SGA mithalten kann. Bitte stellen Sie Folgendes sicher:
* Die Oracle-Datenbankinstanz ist einsatzbereit 
* Oracle Database 11g Automatic Memory Management (AMM) ist nicht konfiguriert

Ich füge den empfohlenen Wert vm.nr_hugepages = 204805 an die Konfigurationsdatei /etc/sysctl.conf an und führe dann sysctl -p aus, um die Konfiguration wirksam zu machen.

3. Bestätigen Sie, dass HugePages erfolgreich eingerichtet wurde

Sehen Sie sich die Informationen zu HugePages an und beachten Sie, dass der HugePages_Total-Wert 204805 beträgt, der zuvor festgelegt wurde:

grep Riesig /proc/meminfo

# grep Riesig /proc/meminfo 
AnonHugePages: 0 kB
HugePages_Total: 204805
HugePages_Free: 168475
HugePages_Rsvd: 168471
HugePages_Surp: 0
Riesige Seitengröße: 2048 kB

Wenn die Datenbank gestartet wird, enthält das entsprechende Warnprotokoll „Informationen zu großen Seiten“:

Mittwoch, 14. November 2018, 14:38:12 Uhr
Starten der ORACLE-Instanz (normal)
************************ Informationen zu großen Seiten *******************
Memlock-Limit (weich) pro Prozesssystem = UNBEGRENZT

Gesamte gemeinsam genutzte globale Region in großen Seiten = 400 GB (100 %)

Von dieser Instanz verwendete große Seiten: 204801 (400 GB)
Große Seiten, die systemweit nicht genutzt werden = 4 (8192 KB)
Große Seiten, systemweit konfiguriert = 204805 (400 GB)
Große Seitengröße = 2048 KB
********************************************************************

Jetzt können Sie bestätigen, dass HugePages erfolgreich eingerichtet wurde.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

<<:  JavaScript implementiert schnell Kalendereffekte

>>:  Erfahrungsaustausch zur Reparatur von MySQL InnoDB-Ausnahmen

Artikel empfehlen

WeChat Mini-Programm Lotterienummerngenerator

In diesem Artikel wird der spezifische Code des W...

Beispielcode einer SVG-Schaltfläche basierend auf einer CSS-Animation

Der spezifische Code lautet wie folgt: <a href...

Tutorial zur Installation und Konfiguration der Version MySQL 5.7.23

Ich habe drei Stunden gebraucht, um MySQL selbst ...

Einige Hinweise zu MySQL-Routineberechtigungen

1. Wenn der Benutzer über die Berechtigung zum Er...

Detaillierte Erläuterung der Wissenspunkte der Linux-DMA-Schnittstelle

1. Zwei Arten der DMA-Zuordnung 1.1. Konsistente ...

Wie werden Leerzeichen in HTML dargestellt (was bedeuten sie)?

Bei der Webentwicklung stößt man häufig auf Zeiche...

HarborRestart-Vorgang nach dem Ändern der Konfigurationsdatei

Ich werde nicht viel Unsinn erzählen, schauen wir...

Analyse des Unterschieds zwischen Emits und Attrs in Vue3

Inhaltsverzeichnis abschließend Praxisanalyse Erw...

Tutorial zur HTML-Tabellenauszeichnung (2): Tabellenrahmenattribute BORDER

Standardmäßig beträgt der Rand der Tabelle 0 und ...

Detaillierte Erklärung der Gründe, warum MySQL-Verbindungen hängen bleiben

Inhaltsverzeichnis 1. Hintergrund Architektur Pro...

MySQL Null kann 5 Probleme verursachen (alle schwerwiegend)

Inhaltsverzeichnis 1. Zähldaten gehen verloren Lö...