hvad er de store sider?

få mere at vide om store sider. Forstå, hvad der er store sider, hvordan man konfigurerer det, hvordan man kontrollerer den aktuelle tilstand, og hvordan man deaktiverer den.

HugePages i Linuk

i denne artikel vil vi lede dig gennem detaljer om store sider, så du kan svare: Hvad er de store sider i Danmark? Sådan aktiveres / deaktiveres store sider? Hvordan til at bestemme enorme sideværdi? RHEL6, RHEL7, Ubuntu osv.

lad os starte med store sider basics.

Hvad er en stor side?

store sider er nyttige til styring af virtuel hukommelse. Som navnet antyder, hjælper de med at styre sider i stor størrelse i hukommelsen ud over standard 4 KB sidestørrelse. Du kan definere så stor som 1 GB sidestørrelse ved hjælp af store sider.

under systemstart reserverer du din hukommelsesdel med store sider til din applikation. Denne hukommelsesdel, dvs. denne hukommelse besat af store sider, byttes aldrig ud af hukommelsen. Det vil holde sig der, indtil du ændrer din konfiguration. Dette øger applikationsydelsen i høj grad som Oracle database med temmelig store hukommelseskrav.

Hvorfor bruge enorme side?

i virtuel hukommelsesstyring opretholder kernen en tabel, hvor den har en kortlægning af den virtuelle hukommelsesadresse til en fysisk adresse. For hver sidetransaktion skal kernen indlæse relateret kortlægning. Hvis du har Sider i Lille størrelse, skal du indlæse flere antal sider, der resulterer i kerne for at indlæse flere kortlægningstabeller. Dette reducerer ydeevnen.

brug af store sider betyder, at du har brug for færre sider. Dette reducerer antallet af kortlægningstabeller, der skal indlæses af kernen i høj grad. Dette øger din kernel-niveau ydeevne, som i sidste ende gavner din ansøgning.

kort sagt, ved at aktivere store sider, har systemet færre sidetabeller at håndtere og dermed mindre overhead for at få adgang til/vedligeholde dem!

Sådan konfigureres store sider?

Kør under kommando for at kontrollere aktuelle enorme sider detaljer.

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

i ovenstående output kan du se størrelsen på en side er 2MBHugepagesizeog i alt 0 sider på systemetHugePages_Total. Denne enorme sidestørrelse kan øges fra 2 MB til maks 1 GB.

Kør under script for at få, hvor meget store sider dit system har brug for i øjeblikket. Manuskriptet er fra Oracle og kan findes.

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

Du kan gemme det i /tmp som hugepages_settings.sh og derefter køre det som nedenfor :

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

Output vil svare til et tal som vist i ovenstående prøveudgang.

dette betyder, at dit system har brug for 124 store sider på 2 MB hver! Hvis du har indstillet 4MB som sidestørrelse, ville output have været 62. Du har pointen, ikke?

Konfigurer hugepages i kernel

nu er sidste del at konfigurere ovennævnte kerneparameter og genindlæse den. Tilføj nedenstående værdi i /etc/sysctl.confog genindlæs konfiguration ved at udstede sysctl -p kommando.

vm.nr_hugepages=126

Bemærk, at vi tilføjede 2 ekstra sider i kernen, da vi ønsker at holde et par sider ekstra end det faktiske krævede nummer.

nu er der konfigureret enorme sider i kernen, men for at give din applikation mulighed for at bruge dem skal du også øge hukommelsesgrænserne. Den nye hukommelsesgrænse skal være 126 sider med 2 MB hver = 252 MB, dvs. 258048 KB.

Du skal redigere nedenstående indstillinger i /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

Nogle gange er disse indstillinger konfigureret i appspecifikke filer som For Oracle DB i /etc/security/limits.d/99-grid-oracle-limits.conf

det er det! Du vil måske genstarte din ansøgning for at gøre brug af disse nye store sider.

Sådan deaktiveres enormesider?

HugePages er generelt aktiveret som standard. Brug nedenstående kommando til at kontrollere den aktuelle tilstand af store sider.

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

flag i output viser, at hugepages er aktiveret på systemet.

for RedHat-baserede systemer er filstien/sys/kernel/mm/redhat_transparent_hugepage/enabled

Hvis du vil deaktivere store sider, skal du tilføjetransparent_hugepage=never i slutningen afkernel linje i/etc/grub.conf genstart systemet.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.