Wat zijn de Grote pagina ‘ s in Linux?

leer meer over grote pagina ‘ s in Linux. Begrijpen wat is enorme pagina ‘ s, hoe het te configureren, hoe de huidige status te controleren, en hoe het uit te schakelen.

HugePages in Linux

In dit artikel zullen we u door details over enorme pagina ’s leiden zodat u kunt antwoorden: Wat zijn enorme pagina’ s in Linux? Hoe Grote pagina ‘ s aan/uit te schakelen? Hoe Grote pagina waarde te bepalen? in Linux zoals RHEL6, Rhel7, Ubuntu, enz.

laten we beginnen met de basisprincipes van Grote pagina ‘ s.

Wat is enorme pagina in Linux?

enorme pagina ‘ s zijn nuttig in virtueel geheugenbeheer in het Linux systeem. Zoals de naam al doet vermoeden, ze helpen is het beheren van enorme grootte pagina ‘ s in het geheugen in aanvulling op de standaard 4KB paginagrootte. U kunt zo groot als 1GB paginagrootte definiëren met behulp van enorme pagina ‘ s.

tijdens het opstarten van het systeem reserveert u uw geheugengedeelte met enorme pagina ‘ s voor uw toepassing. Dit geheugen gedeelte dat wil zeggen dit geheugen bezet door enorme pagina ‘ s wordt nooit verwisseld uit het geheugen. Het blijft daar totdat je je configuratie verandert. Dit verhoogt de prestaties van de applicatie in grote mate, zoals Oracle database met vrij grote geheugenvereisten.

waarom enorme pagina gebruiken?

in virtueel geheugenbeheer houdt de kernel een tabel bij waarin het virtuele geheugenadres wordt toegewezen aan een fysiek adres. Voor elke paginatransactie moet de kernel gerelateerde mapping Laden. Als je kleine pagina ’s hebt dan moet je meer aantallen pagina’ s laden die resulteren in de kernel om meer mapping tabellen te laden. Dit vermindert de prestaties.

het gebruik van enorme pagina ’s betekent dat u minder pagina’ s nodig hebt. Dit vermindert het aantal mapping tabellen dat door de kernel geladen moet worden. Dit verhoogt de prestaties op kernelniveau, wat uiteindelijk ten goede komt aan uw toepassing.

kortom, door enorme pagina ‘ s aan te zetten, heeft het systeem minder paginatabellen om mee om te gaan en dus minder overhead om ze te openen/te onderhouden!

hoe Grote pagina ‘ s configureren?

voer het onderstaande commando uit om de huidige grote pagina ‘ s details te controleren.

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

in de bovenstaande uitvoer kunt u zien dat de grootte van één pagina 2MB Hugepagesize en een totaal van 0 pagina ‘ s op het systeem HugePages_Totalis. Deze enorme paginagrootte kan worden verhoogd van 2MB tot max 1GB.

voer het script uit om te zien hoeveel enorme pagina ‘ s uw systeem momenteel nodig heeft. Het script is van Oracle en is te vinden.

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

u kunt het opslaan in /tmp als hugepages_settings.sh en vervolgens uitvoeren zoals hieronder :

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

De uitvoer zal vergelijkbaar zijn met een bepaald getal zoals weergegeven in bovenstaande voorbeelduitvoer.

Dit betekent dat uw systeem 124 enorme pagina ‘ s van 2MB elk nodig heeft! Als je 4MB als paginagrootte hebt ingesteld, dan zou de uitvoer 62 zijn geweest. Je begrijpt wat ik bedoel, toch?

configureer hugepages in kernel

nu is het laatste deel om de bovengenoemde kernelparameter in te stellen en opnieuw te laden. Voeg onderstaande waarde toe in /etc/sysctl.conf en laad de configuratie opnieuw door het commando sysctl -p uit te voeren.

vm.nr_hugepages=126

merk op dat we 2 extra pagina ’s in de kernel hebben toegevoegd omdat we een paar pagina’ s over willen houden dan het werkelijke vereiste aantal.

nu zijn enorme pagina ‘ s geconfigureerd in de kernel, maar om uw toepassing in staat te stellen ze te gebruiken, moet u ook de geheugenlimieten verhogen. De nieuwe geheugenlimiet moet 126 pagina ‘ s x 2 MB elk = 252 MB i. e. 258048 KB zijn.

u moet onderstaande instellingen bewerken in /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

soms worden deze instellingen geconfigureerd in app – specifieke bestanden zoals voor Oracle DB its in /etc/security/limits.d/99-grid-oracle-limits.conf

dat is het! Misschien wilt u uw applicatie opnieuw opstarten om gebruik te maken van deze nieuwe enorme pagina ‘ s te maken.

hoe hugepages uitschakelen?

HugePages zijn over het algemeen standaard ingeschakeld. Gebruik het onderstaande commando om de huidige status van enorme pagina ‘ s te controleren.

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

vlag in uitvoer geeft aan dat hugepages zijn ingeschakeld op het systeem.

voor op RedHat gebaseerde systemen is het bestandspad /sys/kernel/mm/redhat_transparent_hugepage/enabled

Als u grote pagina ‘ s wilt uitschakelen, voeg dan transparent_hugepage=never aan het einde van kernel regel toe in /etc/grub.conf en start het systeem opnieuw op.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.