mitkä ovat valtavat sivut Linuxissa?

Opi Linuxissa valtavista sivuista. Ymmärtää, mikä on valtava sivut, miten määrittää sen, miten tarkistaa nykyisen tilan,ja miten poistaa sen.

Hugepages in Linux

tässä artikkelissa kerromme sinulle yksityiskohtia valtavista sivuista, jotta voit vastata: mitä ovatko valtavat sivut Linuxissa? Kuinka ottaa käyttöön / poistaa käytöstä valtavia sivuja? Miten määrittää valtava sivuarvo? Linuxissa kuten RHEL6, RHEL7, Ubuntu jne.

aloitetaan valtavilla sivuilla perusteista.

mikä on valtava sivu Linuxissa?

valtavista sivuista on apua virtuaalimuistin hallinnassa Linux-järjestelmässä. Kuten nimestä voi päätellä, ne auttavat hallitsemaan valtava koko sivuja muistiin lisäksi standardi 4KB sivukoko. Voit määritellä niin valtava kuin 1GB sivun koko käyttämällä valtavia sivuja.

järjestelmän käynnistyksen aikana varaat muistiosi, jossa on valtavat sivut hakemustasi varten. Tämä muistiosio eli nämä valtavien sivujen miehittämät muistit eivät koskaan vaihdu pois muistista. Se pysyy siellä, kunnes muutat asetuksiasi. Tämä lisää sovelluksen suorituskykyä suuressa määrin kuin Oracle-tietokanta, jossa on melko suuret muistivaatimukset.

Miksi käyttää valtavaa sivua?

virtuaalimuistin hallinnassa ydin ylläpitää taulukkoa, jossa se on yhdistänyt virtuaalimuistin osoitteen fyysiseen osoitteeseen. Jokaista sivutapahtumaa varten ytimen täytyy ladata siihen liittyvä kartoitus. Jos sinulla on pieniä sivuja, sinun täytyy ladata enemmän sivumääriä tuloksena kernel ladata lisää yhdistäviä taulukoita. Tämä heikentää suorituskykyä.

valtavien sivujen käyttäminen tarkoittaa, että tarvitset vähemmän sivuja. Tämä vähentää kernelin lataamien kartoitustaulukoiden määrää suuresti. Tämä lisää kernel – tason suorituskykyä, joka lopulta hyödyttää sovellustasi.

lyhyesti sanottuna, koska järjestelmä mahdollistaa valtavat sivut, sillä on vähemmän sivutaulukoita käsiteltävänään ja siten vähemmän yleiskustannuksia, jotta se voi käyttää niitä / ylläpitää niitä!

kuinka määrittää valtavat sivut?

Suorita komennon alapuolella tarkistaaksesi nykyisten valtavien sivujen yksityiskohdat.

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

yllä olevasta tulosteesta näkee, että yhden sivun koko on 2MB Hugepagesize ja järjestelmässä on yhteensä 0 sivua HugePages_Total. Tämä valtava sivukoko voidaan kasvattaa 2MB max 1GB.

aja komentosarjan alle saadaksesi kuinka paljon valtavia sivuja järjestelmäsi tarvitsee tällä hetkellä. Käsikirjoitus on Oraclelta ja löytyy.

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

voit tallentaa sen muotoon /tmp as hugepages_settings.sh ja ajaa sen sitten kuten alla :

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

ulostulo on samanlainen kuin jokin luku, kuten yllä oleva otostulos osoittaa.

tämä tarkoittaa, että järjestelmäsi tarvitsee 124 valtavaa 2MB: n sivua! Jos olet asettanut 4MB sivun koko sitten lähtö olisi ollut 62. Ymmärräthän, mitä tarkoitan?

Configure hugepages in kernel

nyt viimeinen osa on määrittää yllä mainittu ytimen parametri ja ladata se uudelleen. Lisää alle arvo kohtaan /etc/sysctl.conf ja lataa kokoonpano uudelleen antamalla sysctl -p komento.

vm.nr_hugepages=126

huomaa, että kerneliin on lisätty 2 ylimääräistä sivua, koska haluamme pitää pari sivua ylimääräistä kuin todellinen tarvittava määrä.

nyt ytimeen on määritetty valtavia sivuja, mutta jotta sovelluksesi voi käyttää niitä, myös muistirajoja on nostettava. Uuden muistirajan tulisi olla 126 sivua x 2 MB kukin = 252 MB eli 258048 KB.

sinun täytyy muokata alla olevia asetuksia /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

joskus nämä asetukset on määritetty sovelluskohtaisissa tiedostoissa, kuten Oracle DB its in /etc/security/limits.d/99-grid-oracle-limits.conf

That ’ s it! Saatat haluta käynnistää sovelluksen hyödyntää näitä uusia valtavia sivuja.

miten hugepages poistetaan käytöstä?

HugePages on yleensä oletusarvoisesti käytössä. Käytä alla olevaa komentoa tarkistaaksesi valtavien sivujen nykytilan.

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

lippu ulostulossa osoittaa, että hugepages on käytössä järjestelmässä.

RedHat-pohjaisten järjestelmien tiedostopolku on /sys/kernel/mm/redhat_transparent_hugepage/enabled

Jos haluat poistaa valtavia sivuja käytöstä, lisää transparent_hugepage=neverkernel line in /etc/grub.conf ja käynnistä järjestelmä uudelleen.

Vastaa

Sähköpostiosoitettasi ei julkaista.