Quali sono le pagine enormi in Linux?

Scopri le pagine enormi in Linux. Capire cosa sono le pagine enormi, come configurarlo, come controllare lo stato corrente e come disabilitarlo.

HugePages in Linux

In questo articolo, ti guideremo attraverso i dettagli sulle pagine enormi in modo da poter rispondere: quali sono pagine enormi in Linux? Come abilitare / disabilitare pagine enormi? Come determinare il valore di pagina enorme? in Linux come RHEL6, RHEL7, Ubuntu, ecc.

Consente di iniziare con enormi basi pagine.

Qual è la pagina enorme in Linux?

Le pagine enormi sono utili nella gestione della memoria virtuale nel sistema Linux. Come suggerisce il nome, aiutano a gestire pagine di dimensioni enormi in memoria oltre alle dimensioni standard della pagina 4KB. È possibile definire enorme come 1 GB dimensioni della pagina utilizzando pagine enormi.

Durante l’avvio del sistema, si riserva la porzione di memoria con pagine enormi per l’applicazione. Questa porzione di memoria, cioè questa memoria occupata da pagine enormi, non viene mai sostituita dalla memoria. Si attaccherà lì fino a quando non cambi la tua configurazione. Ciò aumenta le prestazioni dell’applicazione in larga misura come il database Oracle con requisiti di memoria piuttosto grandi.

Perché usare huge page?

Nella gestione della memoria virtuale, il kernel mantiene una tabella in cui ha una mappatura dell’indirizzo della memoria virtuale a un indirizzo fisico. Per ogni transazione di pagina, il kernel deve caricare la mappatura correlata. Se si dispone di pagine di piccole dimensioni, è necessario caricare più numeri di pagine risultanti dal kernel per caricare più tabelle di mappatura. Ciò diminuisce le prestazioni.

L’utilizzo di pagine enormi significa che avrai bisogno di meno pagine. Ciò riduce in larga misura il numero di tabelle di mappatura da caricare dal kernel. Ciò aumenta le prestazioni a livello di kernel che alla fine avvantaggiano la tua applicazione.

In breve, abilitando pagine enormi, il sistema ha meno tabelle di pagina da gestire e quindi meno overhead per accedervi / mantenerle!

Come configurare pagine enormi?

Esegui sotto il comando per controllare i dettagli delle pagine enormi correnti.

root@kerneltalks # grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB

Nell’output di cui sopra, è possibile vedere la dimensione di una pagina è di 2 MBHugepagesizee un totale di 0 pagine sul sistemaHugePages_Total. Questa enorme dimensione della pagina può essere aumentata da 2 MB a max 1 GB.

Esegui sotto lo script per ottenere quante pagine enormi il tuo sistema ha bisogno attualmente. Lo script è di Oracle e può essere trovato.

#!/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

Puoi salvarlo in /tmp come hugepages_settings.sh e quindi eseguirlo come di seguito :

root@kerneltalks # sh /tmp/hugepages_settings.shRecommended setting: vm.nr_hugepages = 124

L’output sarà simile a un numero come mostrato nell’output di esempio sopra.

Questo significa che il sistema ha bisogno di 124 pagine enormi di 2 MB ciascuno! Se hai impostato 4MB come dimensione della pagina, l’output sarebbe stato 62. Hai capito, vero?

Configura hugepages nel kernel

Ora l’ultima parte è configurare il parametro del kernel sopra indicato e ricaricarlo. Aggiungi sotto il valore in /etc/sysctl.confe ricarica la configurazione emettendo il comando sysctl -p.

vm.nr_hugepages=126

Si noti che abbiamo aggiunto 2 pagine extra nel kernel poiché vogliamo mantenere un paio di pagine di riserva rispetto al numero effettivo richiesto.

Ora sono state configurate pagine enormi nel kernel, ma per consentire all’applicazione di utilizzarle è necessario aumentare anche i limiti di memoria. Il nuovo limite di memoria dovrebbe essere di 126 pagine x 2 MB ciascuna = 252 MB cioè 258048 KB.

È necessario modificare le impostazioni di seguito in /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

A volte queste impostazioni sono configurate in file specifici dell’app come per Oracle DB in /etc/security/limits.d/99-grid-oracle-limits.conf

Questo è tutto! Si potrebbe desiderare di riavviare l’applicazione per fare uso di queste nuove pagine enormi.

Come disabilitare hugepages?

HugePages sono generalmente abilitati per impostazione predefinita. Usa il comando seguente per controllare lo stato corrente delle pagine enormi.

root@kerneltalks # cat /sys/kernel/mm/transparent_hugepage/enabled madvise never

il flag in output mostra che hugepages è abilitato sul sistema.

Per i sistemi basati su RedHat il percorso del file è/sys/kernel/mm/redhat_transparent_hugepage/enabled

Se si desidera disabilitare pagine enormi, aggiungere transparent_hugepage=never alla fine di kernel riga in /etc/grub.conf e riavviare il sistema.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.