
Selles artiklis rÀÀgime vSphere'is töötava RAM-i jÔudlusloenduritest.
MÀlu osas tundub kÔik olevat selgem, kui protsessori osas: kui VM-ides esinevad jÔudlusprobleemid, on neid raske mitte mÀrgata. Kui need aga ilmnevad, on nende lahendamine palju keerulisem. Aga vÔtame kÔik etappid jÀrjest.
Natuke teooriat
Virtuaalmasinate töömĂ€lu tuleb serveri mĂ€lust, millel masinad töötavad. See on tĂ€iesti arusaadav:). Kui serveri töömĂ€lu ei piisa kĂ”igile soovijatele, hakkab ESXi rakendama mĂ€lu optimeerimise tehnikaid (memory reclamation techniques). Vastasel juhul kukuksid operatsioonisĂŒsteemid mĂ€lu juurde pÀÀsemise vigade tĂ”ttu.
Milliseid tehnikaid rakendada, otsustab ESXi mÀlu koormuse pÔhjal:
MĂ€lu seisund
Piir
Toimingud
KÔrge
400% minFree'ist
Peale ĂŒlemise piiri saavutamist jagatakse suured mĂ€lulehed vĂ€ikesteks (TPS töötab tavalises reĆŸiimis).
Puhasta
100% minFree'ist
Suured mÀlulehed jagatakse vÀikesteks, TPS töötab sundimisega.
Pehme
64% minFree'ist
TPS + Balloon
KÔva
32% minFree'ist
TPS + Compress + Swap
Madal
16% minFree'ist
Kao + Vahetus + Plokk
minFree â see on mĂ€lu, mis on vajalik hĂŒperviisori tööks.
Kuni ESXi 4.1 oli minFree vaikimisi fikseeritud â 6% serveri mĂ€lust (protsenti sai muuta valiku Mem.MinFreePct kaudu ESXi-s). Hilisemates versioonides, arvestades serverite mĂ€lu suurenenud mahtu, arvutatakse minFree hosti mĂ€lust, mitte kui fikseeritud protsent.
minFree (vaikimisi) vÀÀrtus arvutatakse jÀrgmiselt:
Protsent mÀlust, mis on reserveeritud minFree jaoks
MĂ€lupiirang
6%
0-4 GB
4%
4-12 GB
2%
12-28 GB
1%
JÀrelejÀÀnud mÀlu
NÀiteks, 128 GB RAM-iga serveri minFree vÀÀrtus oleks jÀrgmine:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Tegelik vÀÀrtus vÔib erineda paarisajas MB vÔrra, sÔltuvalt serverist ja mÀlust.
Protsent mÀlust, mis on reserveeritud minFree jaoks
MĂ€lupiirang
128 GB vÀÀrtus
6%
0-4 GB
245,76 MB
4%
4-12 GB
327,68 MB
2%
12-28 GB
327,68 MB
1%
JÀrelejÀÀnud mÀlu (100 GB)
1024 MB
Tavaliselt peetakse produktiivsete serverite jaoks normaalseks ainult kĂ”rge oleku. Testimis- ja arendussĂŒsteemide puhul vĂ”ivad vastuvĂ”etavad olekud olla Clear/Soft. Kui hostis on vĂ€hemalt 64% MinFree vahemĂ€lu alles, siis toimuvad sellel pĂ”hinevate VM-ide puhul tĂ”enĂ€oliselt jĂ”udlusprobleemid.
Igas olekus rakendatakse teatud mÀlu taaskasutamise tehnikaid, alates TPS-ist, mis praktiliselt ei mÔjuta VM-i jÔudlust, kuni Swappinguni. RÀÀgin neist lÀhemalt.
LÀbipaistev lehe jagamine (TPS). TPS on, julgelt öeldes, virtuaalmasinate mÀlulehtede dedupeerimine serveris.
ESXi otsib sarnaseid virtuaalmasinate mĂ€lulehti, arvutades ja vĂ”rdledes lehtede hash-summasid ning eemaldab dubleeritud lehed, asendades need viidete tĂ”ttu sama lehega fĂŒĂŒsilises mĂ€lus. Selle tulemusena vĂ€heneb fĂŒĂŒsilise mĂ€lu tarbimine ja on vĂ”imalik saavutada teatud mĂ€lude ĂŒmberkirjutamine praktiliselt ilma jĂ”udluse languseta.

Seda mehhanism töötab ainult 4 KB (vĂ€ikesed lehed) mĂ€lulehtede jaoks. 2 MB (suured lehed) lehtede puhul ei ĂŒrita hĂŒperviisor deduplikatsiooni isegi teha, kuna sama suurusega lehtede leidmise vĂ”imalus on vĂ€ike.
Vaikimisi eraldab ESXi mĂ€lu suurtele lehtedele. Suurte lehtede jagamine vĂ€ikesteks algab, kui saavutatakse kĂ”rge olek, ja toimub sunniviisiliselt, kui saavutatakse selge olek (vt hĂŒperviisori olekute tabelit).
Kui soovite, et TPS alustaks tööd, ootamata hosti operaatormĂ€lu tĂ€itumist, peate ESXi TĂ€iustatud valikutes seadma vÀÀrtuse âMem.AllocGuestLargePageâ 0-le (vaikimisi 1). Sel juhul keelatakse suurte mĂ€lulehtede eraldamine virtuaalmasinatele.
Alates 2014. aasta detsembrist on kĂ”igis ESXi vĂ€ljaannetes TPS vahel VM-de vahel vaikimisi keelatud, kuna leiti haavatavus, mis teoreetiliselt vĂ”imaldab saada ĂŒhe VM-i kaudu teise VM-i operaatormĂ€lu. Ăksikasjad siin. Ma ei ole kohanud teavet TPS haavatavuse praktilise rakendamise kohta.
TPS poliitikat kontrollitakse lĂ€bi tĂ€iustatud valiku âMem.ShareForceSaltingâ ESXi-s:
0 â Inter-VM TPS. TPS töötab erinevate VM-ide lehtede jaoks;
1 â TPS sama 'sched.mem.pshare.salt' vÀÀrtusega VM-ide jaoks VMX-is;
2 (vaikimisi) â Intra-VM TPS. TPS töötab lehtede jaoks VM-i sees.
On hĂ€davajalik vĂ€lja lĂŒlitada suured lehed ja aktiveerida Inter-VM TPS testimisjaamades. Seda saab kasutada ka jaamades, kus on palju sarnaseid VM-e. NĂ€iteks VDI jaamades vĂ”ib fĂŒĂŒsilise mĂ€lu kokkuhoid ulatuda kĂŒmnete protsentideni.
Memory Ballooning. Ballooning ei ole enam nii sĂŒĂŒtuks ja lĂ€bipaistvaks operatsioonisĂŒsteemile VM-i tehnika nagu TPS. Kuid Ă”igesti rakendades on Ballooninguga vĂ”imalik elada ja isegi töötada.
Koos Vmware Tools installitakse VM-ile spetsiaalne juhtmega, mida nimetatakse Balloon Driveriks (aka vmmemctl). Kui hĂŒperviisoril hakkab fĂŒĂŒsilisest mĂ€lust puudu jÀÀma ja ta lĂ€heb Soft olekusse, palub ESXi VM-l vabastada mittekasutatav RAM lĂ€bi selle Balloon Driveri. Juhtme töötab omakorda operatsioonisĂŒsteemi tasemel ja kĂŒsib vabade mĂ€lublokkide kohta. HĂŒperviisor nĂ€eb, millised fĂŒĂŒsilised mĂ€lulehed on Balloon Driveri poolt hĂ”ivatud, vĂ”tab mĂ€lumoodulite virtuaalsest masinast ja tagastab hostile. Probleeme operatsioonisĂŒsteemi tööga ei teki, kuna operatsioonisĂŒsteemi tasandil on mĂ€lu hĂ”ivatud Balloon Driveri poolt. Vaikimisi saab Balloon Driver vĂ”tta kuni 65% VM-i mĂ€lust.
Kui VM-il ei ole installitud VMware Tools vĂ”i on Ballooning vĂ€lja lĂŒlitatud (mida ei soovita, kuid on olemas :), siis hĂŒperviisor lĂ€heb kohe ĂŒle rangematele mĂ€lueemaldustehnikatele. JĂ€reldus: veenduge, et VMware Tools oleksid VM-il olemas.

Balloon Driveri tööd saab kontrollida OS-ist lÀbi VMware Tools.
Memory Compression. Seda meetodit kasutatakse, kui ESXi jĂ”uab Hard olekusse. Nagu nimi viitab, pĂŒĂŒab ESXi suruda 4 KB töötlemismĂ€lu lehte 2 KB-ks, et vabastada serveri fĂŒĂŒsilises mĂ€lus natuke ruumi. See tehnika suurendab oluliselt VM-i töötlemismĂ€lu lehtede sisu kĂ€tte saamise aega, kuna lehte tuleb eelnevalt dekompressida. MĂ”nikord ei Ă”nnestu kĂ”iki lehti kokku suruda ja kogu protsess vĂ”tab aega. SeetĂ”ttu ei ole see tehnika praktikas eriti efektiivne.
MĂ€lu vahetamine. PĂ€rast lĂŒhikest MĂ€lu kokkusurumise etappi lĂ€heb ESXi praktiliselt vĂ€ltimatult (kui VM-id ei ole teistesse hostidesse liikunud vĂ”i vĂ€lja lĂŒlitatud) ĂŒle vahetamisele. Ja kui mĂ€lu on peaaegu otsas (Low olek), lĂ”petab hĂŒperviisor samuti VM-ide mĂ€lu lehtede eraldamise, mis vĂ”ib pĂ”hjustada probleeme VM-i kĂŒlaliste operatsioonisĂŒsteemides.
Nii töötab vahetus. Kui virtuaalmasin kĂ€ivitub, luuakse tema jaoks laiendiga .vswp fail. Selle suurus on sama, mis VM-i mittereserveeritud mĂ€lu: see on vahe konfigureeritud ja reserveeritud mĂ€luhulga vahel. Vahetuse toimimise ajal laadib ESXi virtuaalmasina mĂ€lulehed sellesse faili ja hakkab sellega töötama fĂŒĂŒsilise serveri mĂ€lu asemel. Loomulikult on selline "mĂ€lu" mitu korda aeglasem kui tĂ”eline, isegi kui .vswp asub kiirel salvestusruumil.
Erinevalt Ballooningust, mille puhul VM-ilt vĂ”etakse tagasi kasutamata lehed, vĂ”ivad vahetuse korral kettale minna ka lehed, mida operatsioonisĂŒsteem vĂ”i rakendused seespool VM-i aktiivselt kasutavad. Selle tulemusena trĂȘn jĂ”udlus langeb kuni kokkujooksmiseni. VM töötab formaalselt ja seda on vĂ€hemalt vĂ”imalik Ă”igesti vĂ€lja lĂŒlitada operatsioonisĂŒsteemist. Kui olete kannatlik đ
Kui VM-id on vahetusse lÀinud, on see ebanormaalne olukord, mida oleks parem vÀltida.
Virtuaalmasina mÀlu peamised jÔudlusmÔÔdikud
NĂŒĂŒd oleme peamise teema juures. VM-i mĂ€lastaatuse jĂ€lgimiseks on jĂ€rgmised mÔÔdikud:
Active â nĂ€itab mĂ€lu mahtu (KB), millele VM pÀÀses juurde eelneva mÔÔtmise ajal.
Kasutus â sama, mis Active, kuid protsentides VM-i konfigureeritud mĂ€lust. Arvutatakse jĂ€rgmise valemi jĂ€rgi: active Ă· virtuaalmasina konfigureeritud mĂ€lumaht.
KÔrge Usage ja Active ei ole alati nÀitajaid VM-i jÔudlusprobleemide jaoks. Kui VM kasutab mÀlu agressiivselt (kui vÀhemalt pÀÀseb sellele juurde), ei tÀhenda see, et mÀlu on ebapiisav. Pigem on see pÔhjus, miks vaadata, mis OS-is toimub.
VM-i jaoks on saadaval standard Alarm mÀlu kasutamise kohta:

Jagatud â VM-i mĂ€lu maht, mis on dedupliceeritud TPS-iga (kas VM-i sees vĂ”i VM-ide vahel).
Antud â fĂŒĂŒsiline mĂ€lu (KB) hostis, mis on antud VM-ile. Sisaldab Shared.
Tarbitud (Granted â Shared) â fĂŒĂŒsiline mĂ€lu (KB), mida VM hostilt tarbib. Ei sisalda Shared.
Kui osa VM-i mĂ€lust antakse mitte fĂŒĂŒsilisest mĂ€lust hostis, vaid vahetust failist vĂ”i mĂ€lu on VM-ilt Ă€ra vĂ”etud Balloon Driveri kaudu, siis seda mahtu ei arvestata Granted ega Consumed.
KĂ”rged Granted ja Consumed vÀÀrtused on tĂ€iesti normaalsed. OperatsioonisĂŒsteem tĂ”mbab jĂ€rk-jĂ€rgult mĂ€luruumi hĂŒperviisorilt tagasi ja ei anna seda enam tagasi. Aja jooksul, kui virtuaalne masin aktiivselt töötab, lĂ€heneb nende nĂ€itajate vÀÀrtus konfigureeritud mĂ€lu mahule ja jÀÀb sinna.
Null â VM (KB) mĂ€lu maht, mis sisaldab nullide vÀÀrtusi. Sellist mĂ€lu peab hĂŒperviisor vabaks ja see vĂ”ib olla muudele virtuaalsetele masinatele eraldatud. PĂ€rast seda, kui kĂŒlghaldus sĂŒsteem on midagi nullitud mĂ€llu salvestanud, lĂ€heb see Consumed seisundisse ja enam tagasi ei naase.
Reserved Overhead â VM (KB) mĂ€lu maht, mis on hĂŒperviisori poolt VM tööks reserveeritud. See on vĂ€ike maht, kuid see peab olema hostis olemas, vastasel juhul ei kĂ€ivitu VM.
Balloon â mĂ€lu maht (KB), mis on VM-lt saadud Balloon Driveri abil vĂ€lja vĂ”etud.
Compressed â mĂ€lu maht (KB), mida Ă”nnestus kompressida.
Swapped â mĂ€lu maht (KB), mis fĂŒĂŒsilise mĂ€lu puudumisel serveris on diskile ĂŒle viidud.
Balloon ja muud mÀlu tagastamise tehnika nÀitajad on null.
Nii nÀeb vÀlja mÀlu töökindla VM-i nÀitaja graafik, millel on 150 GB RAM-i.

Alloleval graafikul on VM-il selged probleemid. Graafiku all on nÀha, et selle VM-i jaoks on kasutatud kÔiki kirjeldatud tehnikaid mÀluga töötamiseks. Balloon on selle VM-i jaoks palju suurem kui tarbitud. Tegelikult on VM pigem surnud kui elus.

ESXTOP
Nagu ka CPU puhul, kui soovime kiiresti hinnata hosti olukorda ja selle dĂŒnaamikat kuni 2 sekundi intervalliga, tasub kasutada ESXTOPi.
MĂ€lu ESXTOP ekraan avatakse klahviga âmâ ja see nĂ€eb vĂ€lja jĂ€rgmine (valitud vĂ€ljad B, D, H, J, K, L, O):

Meid huvitavad jÀrgmised parameetrid:
Mem overcommit avg â keskmine mĂ€lust ĂŒlekoormus hostis 1, 5 ja 15 minuti jooksul. Kui see on ĂŒle nulli, on see pĂ”hjus vaadata, mis toimub, kuid see ei pruugi alati tĂ€hendada probleemide olemasolu.
Rea PMEM/MB ja VMKMEM/MB â teave serveri fĂŒĂŒsilise mĂ€lu ja VMkernelile ĐŽĐŸŃŃŃĐżĐœĐŸĐč mĂ€lu kohta. Siit saab nĂ€ha huvitavat vÀÀrtust minfree (MB-des) ja hosti mĂ€lu seisundit (meie puhul kĂ”rge).
Reas NUMA/MB numa-sĂ”lmedes (socketites) on vĂ”imalik nĂ€ha operatiivmĂ€lu jaotust. Antud nĂ€ites on jaotus ebaĂŒhtlane, mis ĂŒldiselt pole kuigi hea.
JĂ€rgnevalt on toodud ĂŒldine statistika serveri mĂ€lurekonstruktsioonitehnoloogiate kohta:
PSHARE/MB â see on TPS statistika;
SWAP/MB â Swap-i kasutamise statistika;
ZIP/MB â mĂ€lu lehtede kokkusurumise statistika;
MEMCTL/MB â Balloon Driveri kasutamise statistika.
Erinevate VM-ide puhul vĂ”ib meid huvitada jĂ€rgmine teave. Olen VM-i nimesid varjanud, et mitte publikut segadusse ajada:). Kui ESXTOP-i metrika on sarnane vSphereâi loenduriga, toon vastava loenduri.
MEMSZ â VM-ile konfigureeritud mĂ€lu maht (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + untouched.
GRANT â Granted MB-des.
TCHD â Aktiivsed MB-des.
MCTL? â kas Balloon Driver on VM-il seadistatud.
MCTLSZ â Balloon MB-des.
MCTLGT â operatiivmĂ€lu maht (MB), mille ESXi soovib VM-ilt Balloon Driveri kaudu vĂ€lja vĂ”tta (Memctl Target).
MCTLMAX â maksimaalne operatiivmĂ€lu maht (MB), mille ESXi vĂ”ib VM-ilt Balloon Driveri kaudu vĂ€lja vĂ”tta.
SWCUR â praegune operatiivmĂ€lu maht (MB), mis on VM-ile antud Swap-failist.
SWGT â operatiivmĂ€lu maht (MB), mille ESXi soovib VM-ile anda Swap-failist (Swap Target).
Samuti saab ESXTOP kaudu vaadata ĂŒksikasjalikumat teavet VM-i NUMA-topoloogia kohta. Selleks tuleb valida vĂ€ljad D,G:

NHN â NUMA sĂ”lmed, kus VM asub. Siit saab kohe tĂ€hele panna wide vm-e, mis ei mahuks ĂŒhe NUMA sĂ”lme.
NRMEM â mitu megabaiti mĂ€lu vĂ”tab VM kaugest NUMA sĂ”lmest.
NLMEM â mitu megabaiti mĂ€lu vĂ”tab VM lokaalsest NUMA sĂ”lmest.
N%L â protsent mĂ€lu VM-is kohaliku NUMA sĂ”lmes (kui alla 80% â vĂ”ivad tekkida jĂ”udlusprobleemid).
MĂ€lu hĂŒperviisori peal
Kui CPU loendurid hĂŒperviisori peal ei ole tavaliselt kuigi huvitavad, siis mĂ€lu olukord on vastupidine. KĂ”rge Memory Usage VM-is ei pruugi alati tĂ€hendada jĂ”udlusprobleemi, kuid kĂ”rge Memory Usage hĂŒperviisori peal kutsub esile mĂ€lu haldamise tehnikate tööle asumise ja vĂ”ib tekitada jĂ”udlusprobleeme VM-is. Tuleb jĂ€lgida Host Memory Usage hĂ€ireid ning mitte lubada VM-il Swap'i sattuda.


Unswap
Kui VM satub Swap'i, siis tema jÔudlus langeb oluliselt. Ballooningu ja kompressiooni jÀljed kaovad kiiresti pÀrast seda, kui hostis on vabade mÀlude olemasolu, kuid VM ei kiirusta Swap'ist serveri mÀllu tagasi tulema.
Enne ESXi 6.0 versiooni oli ainus usaldusvÀÀrne ja kiire viis VM-i Swap'ist vĂ€lja saamiseks taaskĂ€ivitamine (tĂ€psemalt konteineri vĂ€ljalĂŒlitamine / sisse lĂŒlitamine). Alates ESXi 6.0-st on olemas kuigi mitte pĂ€ris ametlik, aga töökindel ja efektiivne meetod VM-i Swap'ist vĂ€lja toomiseks. Ăhel konverentsil sain rÀÀkida ĂŒhe VMware inseneriga, kes vastutab CPU ajakava eest. Ta kinnitas, et meetod on tĂ€iesti töökindel ja ohutu. Meie kogemustes pole sellega ka probleeme olnud.
KÀsk VM-i Swap'ist vÀlja toomiseks Duncan Epping. Ei hakka kordama pÔhjalikku kirjeldust, lihtsalt toon vÀlja nÀite selle kasutamisest. Nagu ekraanipildil nÀha, kaob antud kÀsu tÀitmise jÀrel mÔne aja pÀrast Swap VM-ist.

NÔuanded mÀluhalduseks ESXi-l
LÔpuks jagan mÔned nÔuanded, mis aitavad teil vÀltida VM-i jÔudlusprobleeme, mis on seotud mÀluga:
- Ărge lubage mĂ€luregistrite ĂŒleliigset kasutamist tootmisklastrites. Soovitav on alati hoida ~20-30% vaba mĂ€lu klastri sees, et DRS-l (ja administraatoril) oleks manööverdusruumi ning VM-id ei lĂ€heks migreerimise ajal Swap'i. Ărge unustage ka varu talitlushĂ€irete vĂ€ltimiseks. Pole meeldiv, kui ĂŒhe serveri rikke ajal ja VM-idest HA kaudu ĂŒmberlaadimisel mĂ”ned masinad veel Swap'i satuvad.
- KĂ”rge konsolideerimisega infrastruktuurides vĂ€ltige VM-ide loomist, mille mĂ€lu ĂŒletab poole hosti mĂ€lu. See aitab taas DRS-il probleemideta virtuaalseid masinaid klastri serverite vahel jaotada. See reegel ei ole loomulikult universaalne : ).
- JĂ€lgige Host Memory Usage Alarmi.
- Ărge unustage paigaldada VM-idele VMware Tools ja mitte keelata Ballooning'ut.
- Kaaluge Inter-VM TPS-i lubamist ja Large Pages'i keelamist VDI-keskkondades ja katsetamisvÔimalustes.
- Kui VM-il on jÔudlusprobleeme, kontrollige, kas see kasutab mÀlu eemalt NUMA sÔlmedelt.
- VÀljastage VM Swap'ist vÔimalikult kiiresti! KÔikide muude asjade seas kannatab STH, kui VM on Swap'is, mis on ilmselge pÔhjus.
Sellega on minu poolne teema RAM-i kohta lĂ”petatud. Allpool on artiklid, mis kĂ€sitlevad teemat lĂ€hemalt neile, kes soovivad ĂŒksikasjadesse sĂŒveneda. JĂ€rgmine artikkel kĂ€sitleb salvestamist.
Kasulikud lingid
Allikas: habr.com
