care sunt paginile uriașe în Linux?

aflați despre pagini uriașe în Linux. Înțelegeți ce sunt paginile uriașe, cum să le configurați, cum să verificați starea curentă și cum să o dezactivați.

HugePages în Linux

în acest articol, vă vom prezenta detalii despre paginile uriașe, astfel încât să puteți răspunde: Ce sunt pagini uriașe în Linux? Cum să activați / dezactivați paginile uriașe? Cum se determină valoarea uriașă a paginii? în Linux, cum ar fi RHEL6, RHEL7, Ubuntu etc.

Să începem cu elementele de bază ale paginilor uriașe.

ce este pagina uriașă în Linux?

paginile uriașe sunt utile în gestionarea memoriei virtuale în sistemul Linux. După cum sugerează și numele, ele ajută la gestionarea paginilor de dimensiuni uriașe în memorie, pe lângă dimensiunea standard a paginii 4KB. Puteți defini la fel de mare ca dimensiunea paginii 1GB folosind pagini uriașe.

în timpul pornirii sistemului, vă rezervați porțiunea de memorie cu pagini uriașe pentru aplicația dvs. Această porțiune de memorie, adică aceste memorii ocupate de pagini uriașe nu sunt niciodată schimbate din memorie. Se va lipi acolo până când vă schimbați configurația. Acest lucru crește performanța aplicației într-o mare măsură ca Oracle database cu cerințe de memorie destul de mari.

de ce să folosiți pagina uriașă?

în gestionarea memoriei virtuale, nucleul menține un tabel în care are o mapare a adresei de memorie virtuală la o adresă fizică. Pentru fiecare tranzacție de pagină, nucleul trebuie să încarce maparea aferentă. Dacă aveți pagini de dimensiuni mici, atunci trebuie să încărcați mai multe numere de pagini care rezultă kernel pentru a încărca mai multe tabele de cartografiere. Acest lucru scade performanța.

folosind pagini uriașe înseamnă că veți avea nevoie de mai puține pagini. Acest lucru scade numărul de tabele de cartografiere pentru a încărca de kernel-ul într-o mare măsură. Acest lucru crește performanța la nivel de kernel, care în cele din urmă beneficiază aplicația.

pe scurt, permițând pagini uriașe, sistemul are mai puține tabele de pagini pentru a face față și, prin urmare, mai puțin aeriene pentru a le accesa/menține!

cum se configurează pagini uriașe?

rulați comanda de mai jos pentru a verifica detaliile actuale ale paginilor uriașe.

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

în ieșirea de mai sus, puteți vedea dimensiunea unei pagini este de 2MB Hugepagesize și un total de 0 pagini pe sistem HugePages_Total. Această dimensiune uriașă a paginii poate fi mărită de la 2 MB la maxim 1 GB.

rulați scriptul de mai jos pentru a obține cât de multe pagini uriașe are nevoie sistemul dvs. în prezent. Scriptul este de la Oracle și poate fi găsit.

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

îl puteți salva în /tmp ca hugepages_settings.sh și apoi rulați-l ca mai jos :

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

ieșirea va fi similară cu un număr așa cum se arată în ieșirea eșantionului de mai sus.

aceasta înseamnă că sistemul dvs. are nevoie de 124 de pagini uriașe de 2 MB fiecare! Dacă ați setat 4MB ca dimensiune a paginii, atunci ieșirea ar fi fost 62. Ai înțeles ideea, nu?

configurați hugepages în kernel

acum ultima parte este să configurați parametrul kernel menționat mai sus și să îl reîncărcați. Adăugați valoarea de mai jos în /etc/sysctl.conf și reîncărcați configurația prin emiterea sysctl -p comandă.

vm.nr_hugepages=126

observați că am adăugat 2 pagini suplimentare în kernel, deoarece dorim să păstrăm câteva pagini de rezervă decât numărul real necesar.

acum, pagini uriașe au fost configurate în kernel, dar pentru a permite aplicației dvs. să le utilizeze, trebuie să creșteți și limitele de memorie. Noua limită de memorie ar trebui să fie de 126 de pagini x 2 MB fiecare = 252 MB adică 258048 KB.

trebuie să editați setările de mai jos în /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

uneori aceste setări sunt configurate în fișiere specifice aplicației, cum ar fi pentru Oracle DB its în /etc/security/limits.d/99-grid-oracle-limits.conf

asta e! Poate doriți să reporniți aplicația pentru a utiliza aceste noi pagini uriașe.

cum să dezactivați hugepagini?

HugePages sunt în general activate în mod implicit. Utilizați comanda de mai jos pentru a verifica starea actuală a paginilor uriașe.

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

pavilion în ieșire arată că hugepages sunt activate pe sistem.

pentru sistemele bazate pe RedHat calea fișierului este/sys/kernel/mm/redhat_transparent_hugepage/enabled

Dacă doriți să dezactivați pagini uriașe, atunci adăugațitransparent_hugepage=never la sfârșitulkernel linie în/etc/grub.conf și reporniți sistemul.

Lasă un răspuns

Adresa ta de email nu va fi publicată.