
I denne artikkelen skal vi snakke om ytelsesmÄlere for RAM i vSphere.
Det virker som om minnet er litt mer entydig enn prosessoren: hvis det oppstÄr ytelsesproblemer pÄ VM-en, er det vanskelig Ä ikke legge merke til dem. Men hvis de dukker opp, er det mye vanskeligere Ä hÄndtere dem. Men la oss ta det steg for steg.
Litt teori
RAM for virtuelle maskiner hentes fra serverens minne der VMer kjÞrer. Dette er ganske Äpenbart :). Hvis serverens RAM ikke er tilstrekkelig for alle som Þnsker det, begynner ESXi Ä bruke teknikker for optimalisering av minneforbruk (memory reclamation techniques). Ellers ville operativsystemene til VM-ene krasjet med minneadgangsfeil.
Hvilke teknikker ESXi bruker, bestemmes av belastningen pÄ RAM:
Minneforhold
Grense
Handlinger
HĂžy
400% av minFree
NÄr den Þverste grensen er nÄdd, deles store minnesider opp i smÄ (TPS fungerer i standardmodus).
Clear
100% av minFree
Store minnesider deles opp i smÄ, TPS kjÞrer tvingende.
Soft
64% av minFree
TPS + Ballong
Hard
32% av minFree
TPS + Komprimering + Bytte
Lav
16% av minFree
Komprimering + Bytte + Blokk
minFree er det minnet som er nĂždvendig for hypervisorens drift.
Frem til og med ESXi 4.1 var minFree som standard fast â 6% av serverens RAM (prosentandelen kunne endres via alternativet Mem.MinFreePct pĂ„ ESXi). I nyere versjoner begynte minFree Ă„ beregnes ut fra vertsmaskinens minnestĂžrrelse i stedet for som en fast prosentandel.
MinFree-verdien (som standard) beregnes som fĂžlgende:
Prosentandel av minnet reservert for minFree
MinneomrÄde
6%
0-4 GB
4%
4-12 GB
2%
12-28 GB
1%
GjenstÄende minne
For eksempel, for en server med 128 GB RAM vil verdien av MinFree vĂŠre:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Den faktiske verdien kan variere med et par hundre MB, avhengig av serveren og RAM-en.
Prosentandel av minnet reservert for minFree
MinneomrÄde
Verdi for 128 GB
6%
0-4 GB
245,76 MB
4%
4-12 GB
327,68 MB
2%
12-28 GB
327,68 MB
1%
GjenstÄende minne (100 GB)
1024 MB
Normalt anses kun High-tilstand som akseptabel for produktive miljÞer. For test- og utviklingsmiljÞer kan Clear/Soft-tilstander vÊre akseptable. Hvis det er mindre enn 64% av MinFree pÄ vertsmaskinen, vil VM-ene som kjÞrer pÄ den, absolutt oppleve ytelsesproblemer.
I hver tilstand anvendes bestemte memory reclamation techniques fra TPS, som praktisk talt ikke pÄvirker VM-ydelsen, til Swapping. Jeg vil forklare dem nÊrmere.
Transparent Page Sharing (TPS). TPS er groft sagt deduplisering af RAM-siderne pÄ virtuelle maskiner pÄ serveren.
ESXi sÞger efter identiske RAM-sider blandt de virtuelle maskiner ved at beregne og sammenligne hash-vÊrdierne af siderne og fjerner dublikaterne ved at erstatte dem med henvisninger til den samme side i serverens fysiske hukommelse. Som resultat reduceres forbruget af fysisk hukommelse, og man kan opnÄ en vis overskrivning af hukommelsen praktisk talt uden tabs i ydeevnen.

Denne mekanisme fungerer kun for hukommelsessider af 4 KB (small pages). Hypervisoren forsĂžger ikke engang at deduplicere 2 MB (large pages) sider: chancen for at finde identiske sider af den stĂžrrelse er ikke stor.
Som standard tildeler ESXi hukommelse til de store sider. Opdeling af store sider til smÄ starter, nÄr tÊrskeltilstanden High nÄs og sker tvangsvis, nÄr Clear-tilstanden nÄs (se hypervisorens tilstandstabel).
Hvis du Ăžnsker, at TPS skal starte arbejdet uden at vente pĂ„, at vĂŠrtens hukommelse fyldes, skal du indstille vĂŠrdien âMem.AllocGuestLargePageâ til 0 (standard 1). SĂ„ vil tildeling af store hukommelsessider til virtuelle maskiner blive deaktiveret.
Fra december 2014 er TPS mellem VM'er som standard deaktiveret i alle ESXi-udgivelser, da der blev fundet en sÄrbarhed, der teoretisk set kunne give adgang til RAM'en fra en VM til en anden. Yderligere information her. Jeg har ikke set oplysninger om praktisk udnyttelse af TPS-sÄrbarheden.
TPS-politikken styres via den avancerede mulighed âMem.ShareForceSaltingâ pĂ„ ESXi:
0 â Inter-VM TPS. TPS arbejder pĂ„ sider mellem forskellige VM'er;
1 â TPS for VM'er med samme vĂŠrdi for âsched.mem.pshare.saltâ i VMX;
2 (standard) â Intra-VM TPS. TPS arbejder pĂ„ sider inden for VM.
Det giver bestemt mening at deaktivere store sider og aktivere Inter-VM TPS pÄ testmiljÞer. Dette kan ogsÄ bruges til miljÞer med mange ensartede VM'er. For eksempel kan besparelsen af fysisk hukommelse pÄ VDI-miljÞer nÄ op pÄ titusinder af procent.
Memory Ballooning. Ballooning er ikke lenger sÄ ufarlig og gjennomsiktig for operativsystemet som VM-teknikken TPS. Men med riktig bruk av Ballooning kan man leve med det og til og med jobbe.
Sammen med Vmware Tools installeres en spesiell driver pÄ VM-en, kalt Balloon Driver (ogsÄ kjent som vmmemctl). NÄr hypervisoren begynner Ä mangle fysisk minne og gÄr over i tilstanden Soft, ber ESXi VM-en om Ä returnere ubrukt RAM via denne Balloon Driveren. Driveren jobber i sin tur pÄ nivÄet til operativsystemet og ber om ledig minne derfra. Hypervisoren ser hvilke sider av den fysiske minne som er opptatt av Balloon Driver, tar minnet fra den virtuelle maskinen og returnerer det til verten. Det oppstÄr ingen problemer med driften av OS, da minnet pÄ OS-nivÄ er okkupert av Balloon Driver. Som standard kan Balloon Driver ta opptil 65% av minnet til VM-en.
Hvis VMware Tools ikke er installert pÄ VM-en eller Ballooning er deaktivert (jeg anbefaler ikke dette, men det er :), gÄr hypervisoren umiddelbart over til mer aggressive teknikker for minnetrekk. Konklusjon: SÞrg for at VMware Tools er installert pÄ VM-en.

Funksjonen til Balloon Driver kan sjekkes fra OS via VMware Tools..
Memory Compression. Denne teknikken brukes nÄr ESXi nÄr Hard-tilstanden. Som navnet antyder, prÞver ESXi Ä komprimere 4 KB sider av RAM til 2 KB og dermed frigjÞre litt plass i den fysiske minnen til serveren. Denne teknikken Þker betydelig tilgangen til innholdet i RAM-sidene til VM-en, da siden mÄ dekomprimeres fÞrst. Noen ganger klarer man ikke Ä komprimere alle sidene, og selve prosessen tar litt tid. Derfor er denne teknikken ikke veldig effektiv i praksis.
Memory Swapping. Etter en kort fase med Memory Compression, gÄr ESXi nesten uunngÄelig (hvis VM-ene ikke har flyttet til andre verter eller skrudd av) over til Swapping. Og hvis det er veldig lite minne igjen (Low-tilstand), slutter hypervisoren ogsÄ Ä tildele VM-sider med minne, noe som kan forÄrsake problemer i gjeste-OSene til VM-en.
Slik fungerer Swapping. NÄr en virtuell maskin startes, opprettes en fil med .vswp-utvidelse for den. StÞrrelsen er lik den ikke-reserverte RAM-en til VM-en: det er forskjellen mellom konfigurert og reserverte minne. NÄr Swapping er aktivert, overfÞrer ESXi minnesider fra den virtuelle maskinen til denne filen og begynner Ä jobbe med den i stedet for den fysiske minnen pÄ serveren. SelvfÞlgelig er denne 'minnen' flere stÞrrelsesordener tregere enn faktisk minne, selv om .vswp ligger pÄ rask lagring.
I motsetning til Ballooning, hvor VM-en mister ubrukte sider, kan ved Swapping sider som aktivt brukes av operativsystemet eller applikasjoner i VM-en flyttes til disk. Som et resultat faller ytelsen til VM-en, opp til hengning. VM-en fungerer formelt og kan i det minste riktig stenges fra OS. Hvis du er tĂ„lmodig đ
Hvis VM-ene har gÄtt i Swap, er det en unormal situasjon som best unngÄs.
HovedytelsesmÄlere for minnet til den virtuelle maskinen
NÄ har vi nÄdd kjernen av saken. For Ä overvÄke minnestatusen i VM-en finnes fÞlgende mÄlere:
Aktiv â viser mengden RAM (KB) som VM-en hadde tilgang til i den forrige mĂ„leperioden.
Bruk â det samme som Aktive, men i prosent av den konfigurerte RAM-en til VM-en. Beregnes med fĂžlgende formel: aktiv Ă· virtual machine configured memory size.
HÞy Bruk og Aktiv betyr ikke nÞdvendigvis at det er ytelsesproblemer med VM-en. Hvis VM-en aggressivt bruker minne (minst fÄr tilgang til det), betyr det ikke at det er mangel pÄ minne. Snarere er det en grunn til Ä se pÄ hva som skjer i OS.
Det finnes en standard Alarm for Memory Usage for VM-er:

Delt â volumet av RAM i VM-en som er deduplisert ved hjelp av TPS (internt i VM-en eller mellom VM-er).
Tildelt â volumet av fysisk minne pĂ„ verten (KB) som er tildelt til VM-en. Inkluderer Delt.
Brukt (Tildelt â Delt) â volumet av fysisk minne (KB) som VM-en bruker fra verten. Inkluderer ikke Delt.
Hvis en del av minnet til VM-en tildeles fra swap-filen eller minne er avskÄret fra VM-en via Balloon Driver, blir dette ikke inkludert i Tildelt og Brukt.
HĂžye verdier for Granted og Consumed er helt normalt. Operativsystemet tar gradvis minne fra hypervisoren og gir det ikke tilbake. Over tid nĂŠrmer dataene til disse tellerne seg volumet av den konfigurerte minnen, og de forblir der.
Null â volumet av VM RAM (Kbyte) som inneholder nuller. Slikt minne betraktes som ledig av hypervisoren og kan gis til andre virtuelle maskiner. Etter at gjeste-OS har skrevet noe i det nullstilte minnet, mĂ„ det over til Consumed og kommer ikke tilbake.
Reserved Overhead â volumet av VM RAM (Kbyte) som er reservert av hypervisoren for Ă„ fĂ„ VM til Ă„ fungere. Dette er et lite volum, men det mĂ„ absolutt vĂŠre tilgjengelig pĂ„ verten, ellers kan ikke VM starte.
Balloon â volumet av RAM (Kbyte) som er tatt fra VM ved hjelp av Balloon Driver.
Compressed â volumet av RAM (Kbyte) som har blitt komprimert.
Swapped â volumet av RAM (Kbyte) som, pĂ„ grunn av mangel pĂ„ fysisk minne pĂ„ serveren, har flyttet til disken.
Balloon og andre tellere for minnegjenvinning er lik null.
Slik ser grafen med telere for en normalt fungerende VM med 150 GB RAM ut.

Grafen nedenfor viser tydelige problemer for VM. Under grafen kan vi se at alle beskrevne teknikker for minnebehandling har blitt brukt for denne VM. Balloon for denne VM er betydelig stĂžrre enn Consumed. Faktisk er VM mer dĂžd enn levende.

ESXTOP
Som med CPU, hvis vi vil vurdere situasjonen pÄ verten raskt, samt dens dynamikk med intervaller pÄ opptil 2 sekunder, er det best Ä bruke ESXTOP.
ESXTOP-skjermen for minne aktiveres med 'm'-tasten og ser slik ut (feltene B,D,H,J,K,L,O er valgt):

FĂžlgende parametere vil vĂŠre interessante for oss:
Mem overcommit avg â gjennomsnittlig minneoverbooking pĂ„ verten over 1, 5 og 15 minutter. Hvis det er over null, er det grunn til Ă„ se hva som skjer, men det er ikke alltid et tegn pĂ„ problemer.
I linjene PMEM/MB og VMKMEM/MB â informasjon om den fysiske minnen til serveren og minnet tilgjengelig for VMkernel. Her kan vi se minfree-verdien (i MB), tilstanden til verten med hensyn til minne (i vĂ„rt tilfelle, hĂžy).
I linjen NUMA/MB kan vi se fordelingen av RAM over NUMA-noder (prosessorer). I dette eksempelet er fordelingen ujevn, noe som i prinsippet ikke er sÄ bra.
Her kjem generell statistikk om serveren vedrĂžrende minnegjenvinningsteknikker:
PSHARE/MB â dette er TPS-statistikk;
SWAP/MB â statistikk for bruk av Swap;
ZIP/MB â statistikk for komprimering av minnesider;
MEMCTL/MB â statistikk for bruk av Balloon Driver.
For individuelle VM-er kan vi vĂŠre interessert i fĂžlgende informasjon. Jeg har skjult VM-navnene for ikke Ă„ forvirre publikum :). Hvis ESXTOP-metrikken er lik telleren i vSphere, gir jeg den tilsvarende telleren.
MEMSZ â mengden minne konfigurert pĂ„ VM (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + untouched.
GRANT â Granted i MB.
TCHD â Active i MB.
MCTL? â er Balloon Driver installert pĂ„ VM.
MCTLSZ â Balloon i MB.
MCTLGT â mengden RAM (MB) som ESXi Ăžnsker Ă„ trekke fra VM gjennom Balloon Driver (Memctl Target).
MCTLMAX â maks mengde RAM (MB) som ESXi kan trekke fra VM gjennom Balloon Driver.
SWCUR â nĂ„vĂŠrende mengde RAM (MB) tildelt VM fra Swap-filen.
SWGT â mengden RAM (MB) som ESXi Ăžnsker Ă„ gi VM fra Swap-filen (Swap Target).
Gjennom ESXTOP kan man ogsÄ se mer detaljert informasjon om NUMA-topologien til VM. For dette mÄ man velge feltene D,G:

NHN â NUMA-noder der VM er plassert. Her kan man umiddelbart merke wide VM-er som ikke passer inn pĂ„ Ă©n NUMA-node.
NRMEM â hvor mange megabyte minne VM tar fra en fjern NUMA-node.
NLMEM â hvor mange megabyte minne VM tar fra en lokal NUMA-node.
N%L â prosent av minnet til VM pĂ„ lokal NUMA-node (hvis under 80 % â kan det oppstĂ„ ytelsesproblemer).
Minne pÄ hypervisoren
Hvis CPU-tellere pÄ hypervisoren vanligvis ikke er av stor interesse, er situasjonen med minnet den motsatte. HÞy minnebruk pÄ VM indikerer ikke alltid et ytelsesproblem, men hÞy minnebruk pÄ hypervisoren utlÞser faktisk minnehÄndteringsteknikker og forÄrsaker problemer med ytelsen til VM. Man mÄ overvÄke varslene for Host Memory Usage og unngÄ at VM havner i Swap.


Unswap
Hvis VM har havnet i Swap, vil ytelsen dens bli kraftig redusert. Spor av Ballooning og komprimering forsvinner raskt etter at det blir ledig RAM pÄ verten, men det er ikke hastverk med Ä komme seg fra Swap tilbake til serverens RAM.
Frem til ESXi 6.0 var den eneste pÄlitelige og hurtige mÄten Ä hente VM fra Swap pÄ Ä starte den pÄ nytt (mer presist Ä skru av/pÄ containeren). Fra og med ESXi 6.0 ble det introdusert en metode som, selv om den ikke helt er offisiell, er en fungerende og pÄlitelig mÄte Ä hente VM fra Swap. PÄ en av konferansene klarte jeg Ä snakke med en av ingeniÞrene i VMware som jobber med CPU Scheduler. Han bekreftet at metoden er fullt funksjonell og sikker. Vi har heller ikke hatt noen problemer med den i vÄr erfaring.
Kommandos for Ä hente VM fra Swap Duncan Epping. Jeg vil ikke gjenta den detaljerte beskrivelsen, bare gi et eksempel pÄ bruken av den. Som vist pÄ skjermen, forsvinner Swap fra VM etter en tid etter at den angitte kommandoen er utfÞrt.

Tips for Ä hÄndtere RAM pÄ ESXi
Til slutt gir jeg noen tips som kan hjelpe deg med Ä unngÄ ytelsesproblemer i VM pÄ grunn av RAM:
- UnngÄ oversalg av RAM i produksjonsklynger. Det er best Ä alltid ha ~20-30% ledig minne i klyngen, slik at DRS (og administratoren) har rom for manÞvrering, og at VM ikke gÄr i Swap under migrering. Ikke glem Ä ta hensyn til redundans. Det er ubehagelig nÄr en server svikter, og omstart av VM via HA fÞrer til at noen maskiner ogsÄ gÄr i Swap.
- I infrastrukturer med hÞy konsolidering, prÞv Ä IKKE opprette VM med mer enn halvparten av minnet til verten. Dette vil igjen hjelpe DRS med Ä distribuere virtuelle maskiner pÄ serverne i klyngen uten problemer. Denne regelen er selvfÞlgelig ikke universell : ).
- FÞlg med pÄ Alarm for Bruk av Vertens Minne.
- Husk Ä installere VMware Tools pÄ VM og ikke deaktivere Ballooning.
- Vurder Ă„ aktivere Inter-VM TPS og deaktivere Store Sider i VDI-miljĂžer og testmiljĂžer.
- Hvis VM har ytelsesproblemer, sjekk om den bruker minne fra en fjern NUMA-node.
- Hent VM fra Swap sÄ raskt som mulig! I tillegg, hvis VM er i Swap, vil lagringssystemet lide av Äpenbare grunner.
Det er alt jeg har om RAM. Nedenfor er artikler om emnet for de som Þnsker Ä dykke dypere inn i detaljene. Neste artikkel vil fokusere pÄ lagring.
Nyttige lenker
Kilde: habr.com
