vilka är de enorma sidorna i Linux?

lär dig mer om stora sidor i Linux. Förstå vad som är enorma sidor, hur man konfigurerar det, hur man kontrollerar det aktuella tillståndet och hur man inaktiverar det.

HugePages i Linux

i den här artikeln kommer vi att gå igenom detaljer om stora sidor så att du kan svara: Vad är stora sidor i Linux? Hur aktiverar / inaktiverar du stora sidor? Hur man bestämmer stort sidvärde? i Linux som RHEL6, RHEL7, Ubuntu, etc.

Låt oss börja med stora sidor grunderna.

Vad är enorm sida i Linux?

stora sidor är användbara vid hantering av virtuellt minne i Linux-systemet. Som namnet antyder, de hjälper är att hantera enorma storlek sidor i minnet utöver standard 4KB sidstorlek. Du kan definiera så stor som 1 GB sidstorlek med stora sidor.

under systemstart reserverar du din minnesdel med stora sidor för din applikation. Denna minnesdel, dvs dessa minne som upptas av stora sidor, byts aldrig ut ur minnet. Det kommer att hålla fast där tills du ändrar din konfiguration. Detta ökar programmets prestanda i stor utsträckning som Oracle database med ganska stora minneskrav.

Varför använda enorm sida?

i hantering av virtuellt minne upprätthåller kärnan en tabell där den har en mappning av den virtuella minnesadressen till en fysisk adress. För varje sidtransaktion måste kärnan ladda relaterad mappning. Om du har små sidor måste du ladda fler antal sidor som resulterar i kärnan för att ladda fler kartläggningstabeller. Detta minskar prestanda.

att använda stora sidor betyder att du behöver färre sidor. Detta minskar antalet kartläggningstabeller som ska laddas av kärnan i stor utsträckning. Detta ökar din kärnnivå prestanda vilket i slutändan gynnar din applikation.

kort sagt, genom att aktivera stora sidor har systemet färre sidtabeller att hantera och därmed mindre omkostnader för att komma åt/underhålla dem!

hur konfigurerar du stora sidor?

kör under kommandot för att kontrollera aktuella stora sidor detaljer.

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

i ovanstående utgång kan du se en sidstorlek är 2MB Hugepagesize och totalt 0 sidor på systemet HugePages_Total. Denna enorma sidstorlek kan ökas från 2MB till max 1GB.

kör under skript för att få hur mycket stora sidor ditt system behöver för närvarande. Manuset är från Oracle och kan hittas.

#!/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 spara den i /tmp som hugepages_settings.sh och kör den sedan som nedan :

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

utgången kommer att likna något tal som visas i ovanstående provutgång.

det betyder att ditt system behöver 124 stora sidor med 2 MB vardera! Om du har ställt in 4MB som sidstorlek skulle utmatningen ha varit 62. Du har poängen, eller hur?

konfigurera hugepages i kärnan

nu är den sista delen att konfigurera den ovan angivna kärnparametern och ladda om den. Lägg till under värde i/etc/sysctl.conf och ladda om konfiguration genom att utfärdasysctl -p kommando.

vm.nr_hugepages=126

Lägg märke till att vi lagt till 2 extra sidor i kärnan eftersom vi vill behålla ett par sidor extra än det faktiska antalet.

nu har stora sidor konfigurerats i kärnan, men för att din applikation ska kunna använda dem måste du också öka minnesgränserna. Den nya minnesgränsen bör vara 126 sidor x 2 MB vardera = 252 MB dvs 258048 KB.

Du måste redigera inställningarna nedan i /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

ibland konfigureras dessa inställningar i appspecifika filer som för Oracle DB its i /etc/security/limits.d/99-grid-oracle-limits.conf

det är det! Du kanske vill starta om programmet för att använda dessa nya stora sidor.

Hur inaktiverar du enormasidor?

HugePages är vanligtvis aktiverade som standard. Använd kommandot nedan för att kontrollera det aktuella läget för stora sidor.

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

flagga i utdata visar att hugepages är aktiverade på systemet.

För RedHat-baserade system är filvägen/sys/kernel/mm/redhat_transparent_hugepage/enabled

om du vill inaktivera stora sidor lägger du tilltransparent_hugepage=never I slutet avkernel rad i/etc/grub.conf och starta om systemet.

Lämna ett svar

Din e-postadress kommer inte publiceras.