melyek a Linux hatalmas oldalai?

Tudjon meg többet a Linux hatalmas oldalairól. Értsd meg, mi a hatalmas oldal, hogyan kell konfigurálni, hogyan kell ellenőrizni az aktuális állapotot, hogyan lehet letiltani.

HugePages Linux alatt

ebben a cikkben végigvezetjük a hatalmas oldalak részleteit, hogy válaszolni tudjon: mit hatalmas oldalak vannak Linuxban? Hogyan lehet engedélyezni/letiltani a hatalmas oldalakat? Hogyan lehet meghatározni a hatalmas oldalértéket? Linuxban, például RHEL6, RHEL7, Ubuntu stb.

kezdjük a hatalmas oldalak alapjait.

mi a hatalmas oldal a Linuxban?

A Hatalmas oldalak hasznosak a virtuális memória kezelésében a Linux rendszerben. Ahogy a neve is sugallja, segítenek a hatalmas méretű oldalak kezelésében a memóriában a szokásos 4KB oldalméret mellett. Megadhat olyan hatalmas, mint 1 GB oldalméret segítségével hatalmas oldalakat.

a rendszerindítás során a memória részét hatalmas oldalakkal foglalja le az alkalmazás számára. Ezt a memóriarészt, azaz ezeket a hatalmas oldalak által elfoglalt memóriát soha nem cserélik ki a memóriából. Addig fog ott maradni, amíg meg nem változtatja a konfigurációt. Ez nagymértékben növeli az alkalmazás teljesítményét, mint például az Oracle database, elég nagy memóriaigényekkel.

miért érdemes hatalmas oldalt használni?

a virtuális memória kezelésében a kernel fenntart egy táblázatot, amelyben a virtuális memória címét egy fizikai címre leképezi. Minden oldal tranzakcióhoz a kernelnek be kell töltenie a kapcsolódó leképezést. Ha kis méretű oldalakkal rendelkezik, akkor több oldalszámot kell betöltenie a rendszermagból, hogy több leképezési táblát töltsön be. Ez csökkenti a teljesítményt.

a hatalmas oldalak használata azt jelenti, hogy kevesebb oldalra lesz szüksége. Ez nagymértékben csökkenti a kernel által betöltendő leképezési táblák számát. Ez növeli a kernel szintű teljesítményt, ami végső soron előnyös az alkalmazás számára.

röviden, azáltal, hogy lehetővé teszi a hatalmas oldalak, a rendszer kevesebb oldal táblák foglalkozni, és így kevesebb rezsi eléréséhez / karbantartásához őket!

hogyan kell konfigurálni a hatalmas oldalakat?

futtassa a parancs alatt, hogy ellenőrizze az aktuális hatalmas oldalak részleteit.

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

a fenti kimeneten látható, hogy az egyoldalas Méret 2 MB Hugepagesizeés összesen 0 oldal a rendszeren HugePages_Total. Ez a hatalmas oldalméret 2 MB-ról max 1 GB-ra növelhető.

futtassa a szkript alatt, hogy megkapja, mennyi hatalmas oldalra van szüksége a rendszernek jelenleg. A forgatókönyv az Oracle – től származik, és megtalálható.

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

mentheti a /tmp as hugepages_settings.sh majd futtassa az alábbiak szerint :

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

A kimenet hasonló lesz néhány számhoz, amint azt a fenti Minta kimenet mutatja.

Ez azt jelenti, hogy a rendszernek 124 hatalmas, 2 MB-os oldalra van szüksége! Ha 4 MB-ot állított be oldalméretként, akkor a kimenet 62 lett volna. Érted a lényeget, ugye?

A hugepages konfigurálása a kernelben

most az utolsó rész a fent említett kernel paraméter konfigurálása és újratöltése. Adja hozzá a /etc/sysctl.conf érték alatti értéket, majd töltse be újra a konfigurációt a sysctl -p parancs kiadásával.

vm.nr_hugepages=126

figyeljük meg, hogy 2 extra oldalt adtunk hozzá a kernelhez, mivel néhány oldalt meg akarunk tartani a ténylegesen szükséges számnál.

most hatalmas oldalak vannak konfigurálva a kernelben, de ahhoz, hogy az alkalmazás használhassa őket, növelnie kell a memória korlátokat is. Az új memóriakorlátnak 126 oldal x 2 MB-nak kell lennie = 252 MB, azaz 258048 KB.

a Beállítások alatt szerkeszteni kell /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

néha ezek a beállítások az alkalmazásspecifikus fájlokban vannak konfigurálva, mint például az Oracle DB its esetében /etc/security/limits.d/99-grid-oracle-limits.conf

ennyi! Érdemes újraindítani az alkalmazást, hogy használja ezeket az új hatalmas oldalakat.

hogyan lehet letiltani a hugepages-t?

a HugePages alapértelmezés szerint általában engedélyezve van. Az alábbi paranccsal ellenőrizheti a hatalmas oldalak aktuális állapotát.

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

zászló a kimenet azt mutatja, hogy hugepages engedélyezve vannak a rendszeren.

RedHat alapú rendszereknél a fájl elérési útja /sys/kernel/mm/redhat_transparent_hugepage/enabled

Ha le szeretné tiltani a hatalmas oldalakat, akkor adja hozzá transparent_hugepage=never a kernel sor végén /etc/grub.conf és indítsa újra a rendszer.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.