
Selles artiklis rÀÀgime mÀluhalduse jÔudlusnÀidikutest (RAM) vSphere'is.
MÀlu osas tundub kÔik selgem kui protsessori puhul: kui VM-idel tekivad jÔudlusprobleemid, on neid raske mitte mÀrgata. Samas, kui need esinevad, on nendega palju keerulisem toime tulla. Kuid rÀÀgime kÔigest jÀrjekorras.
Veidi teooriat
Virtuaalmasinate mĂ€lu vĂ”etakse serveri mĂ€lust, kus VM-id töötavad. See on tĂ€iesti ilmselge :)). Kui serveri mĂ€lust ei piisa kĂ”igi soovijate jaoks, hakkab ESXi rakendama mĂ€lu optimeerimise tehnikaid (memory reclamation techniques). Vastasel juhul kukuksid operatsioonisĂŒsteemid VM-des vĂ€lja, kuna juurdepÀÀs RAM-ile ebaĂ”nnestuks.
Milliseid tehnikaid rakendada, otsustab ESXi sÔltuvalt mÀlu koormusest:
MĂ€lu olek
Piir
Tegevused
High
400% minFree-st
Ălemise piiri saavutamisel jagatakse suured mĂ€lulehed vĂ€iksemateks (TPS töötab tavalises reĆŸiimis).
Kustuta
100% minFree-st
Suured mĂ€lulehed jagatakse vĂ€iksemateks, TPS töötab sundreĆŸiimis.
Soft
64% minFree-st
TPS + Balloon
Hard
32% minFree-st
TPS + Compress + Swap
Madal
16% minFree-st
Compress + Swap + Block
minFree onmĂ€lu, mis on vajalik hĂŒperviisori töötamiseks.
Kuni ESXi 4.1 vĂ€lja arvatud oli minFree vaikimisi fikseeritud â 6% serveri mĂ€lu mahust (seda protsenti sai muuta ESXi-s valikuga Mem.MinFreePct). Hilisemates versioonides, kuna serverite mĂ€lu mahud kasvasid, arvutatakse minFree vastavalt hosti mĂ€lumahule, mitte fikseeritud protsendina.
Vaikimisi minFree vÀÀrtus arvutatakse jÀrgmiselt:
MĂ€lu protsent, mis reserveeritakse minFree jaoks
MĂ€lu vahemik
6%
0-4 GB
4%
4-12 GB
2%
12-28 GB
1%
JÀÀnud mÀlu
NÀiteks serveri, millel on 128 GB RAM, 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 paarisaja MB vÔrra, sÔltuvalt serverist ja mÀlust.
MĂ€lu protsent, mis reserveeritakse minFree jaoks
MĂ€lu vahemik
128 GB jaoks 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ÀÀnud mÀlu (100 GB)
1024 MB
Tavaliselt vÔib tootmisseadistuste puhul pidada kÔrget olekut normaalseks. Testimise ja arendamise seadistuste puhul vÔivad aktsepteeritavad olla seisundid Clear/Soft. Kui hostis jÀÀb minFree-st vÀhem kui 64%, siis VM-id, mis sellel töötavad, kogevad kindlasti jÔudlusprobleeme.
Iga seisundis rakendatakse teatud mÀlu tagasiatchimise tehnikasid, alustades TPS-ist, mis praktiliselt ei mÔjuta VM-i jÔudlust, ja lÔpetades vahetusse kuuluvate tehnoloogiatega. RÀÀgin neist lÀhemalt.
LĂ€bipaistev lehe jagamine (TPS). TPS on, ĂŒtleme nii, virtuaalsete masinate mĂ€lulehtede deplitseerimine serveris.
ESXi otsib virtuaalsete masinate identseid mĂ€lu lehti, arvestades ja vĂ”rreldes lehe hash-summat, ning eemaldab korduvad lehed, asendades need viidete kaudu sama lehega fĂŒĂŒsilises mĂ€lus serveris. Selle tulemusena vĂ€heneb fĂŒĂŒsilise mĂ€lu tarbimine ja on vĂ”imalik saavutada teatud mĂ€lureetmine praktiliselt ilma jĂ”udluse vĂ€henemiseta.

See mehhanism töötab ainult 4 Kb (vĂ€ikeste lehtede) mĂ€lulehtede puhul. 2 Mb (suurte lehtede) suurusega lehti hĂŒperviisor ei pĂŒĂŒa isegi deplitseerida: identsete lehtede leidmise tĂ”enĂ€osus sellise suuruse puhul ei ole suur.
VaikesĂ€tetena eraldab ESXi mĂ€lu suurtele lehtedele. Suurte lehtede jagamine vĂ€ikesteks algab, kui saavutatakse kĂ”rge oleku lĂ€vi, ja toimub sundimise teel, kui saavutatakse selge olek (vt hĂŒperviisori olekute tabelit).
Kui soovite, et TPS alustaks tööd, ilma et ootate hosti mĂ€lu tĂ€itumist, peate ESXi TĂ€iustatud valikutes seadmise vÀÀrtuse âMem.AllocGuestLargePageâ seadma 0-le (vaikesĂ€ttega 1). Siis on suured lehtede mĂ€lu virtualiseerimiseks vĂ€lja lĂŒlitatud.
Alates 2014. aasta detsembrist on kĂ”igis ESXi versioonides TPS VM-ide vahel vaikesĂ€tetena vĂ€lja lĂŒlitatud, kuna leiti haavatavus, mis teoreetiliselt vĂ”imaldab ĂŒhe VM-i kaudu pÀÀseda teise VM-i mĂ€lu. Ăksikasjad siin. Teave TPS haavatavuse praktilise kasutamise rakendamise kohta ei ole mulle teada.
TPS poliitikat kontrollitakse lĂ€bi tĂ€iustatud valiku âMem.ShareForceSaltingâ ESXi-s:
0 â Inter-VM TPS. TPS töötab erinevate VM-ide lehtede puhul;
1 â TPS VM-ide puhul, millel on sama âsched.mem.pshare.saltâ vÀÀrtus VMX-is;
2 (vaikesĂ€ttena) â Intra-VM TPS. TPS töötab lehtede vahel VM-i sees.
MĂ”istlik on vĂ€lja lĂŒlitada suured lehed ja lubada Inter-VM TPS testkeskkondades. Seda vĂ”ib kasutada ka keskkondades, kus on suur hulk sarnaseid VM-e. NĂ€iteks VDI keskkondades vĂ”ib fĂŒĂŒsilise mĂ€lu kokkuhoid ulatuda kĂŒmnetesse protsentidesse.
MÀlu balloonimine. Ballooning ei ole enam nii kahjutu ja lÀbipaistev VM-tehnika nagu TPS. Kuid kui seda Ôigesti rakendada, on Ballooninguga vÔimalik elada ja isegi töötada.
Koos VMware Toolsiga installitakse VM-ile spetsiaalne draiver, mida nimetatakse Balloon Driveriks (samuti vmmemctl). Kui hĂŒpervisoril hakkab fĂŒĂŒsilisest mĂ€lust puudu, siseneb ta Soft-seisundisse, kus ESXi palub VM-l tagasi anda kasutamata operatiivmĂ€lu lĂ€bi selle Balloon Driveri. Draiver töötab opsĂŒsteemi tasemel ja kĂŒsib vabadele andmetele operatsioonisĂŒsteemist. HĂŒpervisor nĂ€eb, millised fĂŒĂŒsilise mĂ€lu lehed on Balloon Driveri poolt hĂ”ivatud, vĂ”tab mĂ€lumahtu virtuaalmasinalt ja tagastab selle hostile. OperatsioonisĂŒsteemi tööga ei esine probleeme, kuna mĂ€lu on opsĂŒsteemi tasemel Balloon Driveri poolt hĂ”ivatud. Vaikimisi vĂ”ib Balloon Driver vĂ”tta kuni 65% VM-i mĂ€lust.
Kui VM-il ei ole installitud VMware Toolsit vĂ”i on Ballooning vĂ€lja lĂŒlitatud (soovitan mitte teha, kuid on olemas :), hĂŒpervisor lĂ€heb kohe rangemate mĂ€lu Ă€ra vĂ”tmiseks mĂ”eldud tehnikate juurde. JĂ€reldus: jĂ€lgige, et VMware Tools oleks VM-is installitud.

Balloon Driveri tööd saab kontrollida opsĂŒsteemist lĂ€bi VMware Toolsi.
MĂ€lu kokkusurumine. Seda tehnikat kasutatakse, kui ESXi jĂ”uab Hard-seisundisse. Nagu nimigi ĂŒtleb, ĂŒritab ESXi suruda 4 KB suurused operatiivmĂ€lu lehed 2 KB suurusteks, vabastades seelĂ€bi veidi ruumi serveri fĂŒĂŒsilises mĂ€lus. See tehnika suurendab oluliselt juurdepÀÀsu aega VM-i operatiivmĂ€lu lehtede sisule, kuna leht tuleb eelnevalt dekompressida. Vahel ei Ă”nnestu kĂ”iki lehti kokku suruda ja kogu protsess vĂ”tab teatud aja. SeetĂ”ttu ei ole see tehnika praktikas eriti tĂ”hus.
MĂ€lu vahetus. PĂ€rast lĂŒhikest mĂ€lu kokkusurumise faasi lĂ€heb ESXi praktiliselt vĂ€ltimatult (kui VM-e ei ole teisaldatud teistele hostidele vĂ”i vĂ€lja lĂŒlitatud) vahetusse. Ja kui mĂ€lu on jÀÀnud vĂ€ga vĂ€he (madal seisund), siis hĂŒpervisor lĂ”petab ka VM-idele mĂ€lulehtede eraldamise, mis vĂ”ib pĂ”hjustada probleeme VM-i kĂŒlaliste opsĂŒsteemides.
Nii, kuidas Swapping töötab. Virtuaalmasina aktiveerimisel luuakse selle jaoks fail laiendiga .vswp. Suuruselt on see vĂ”rdne VM-i mittereserveeritud mĂ€lu osaga: see on erinevus konfigureeritud ja reserveeritud mĂ€lu vahel. Swappingu korral laadib ESXi virtuaalmasina mĂ€lu lehekĂŒljed sellesse faili ja hakkab töötama selle abil fĂŒĂŒsilise mĂ€luga serveris. Loomulikult on selline âmĂ€luâ mitmeid korraldusi aeglasem kui tĂ”eline, isegi kui .vswp asub kiirel salvestusseadmel.
Erinevalt Ballooning'ust, kus VM-ilt vĂ”etakse kasutamata lehekĂŒljed, vĂ”ivad Swappingu ajal ketta peale minna lehekĂŒljed, mida OS vĂ”i rakendused aktiivselt kasutavad. Selle tulemusel langeb VM-i jĂ”udlus tĂ”siselt, kuni see hakkab kĂŒlmuma. VM töötab formaalselt ja seda saab vĂ€hemalt Ă”igesti OS-ist vĂ€lja lĂŒlitada. Kui te olete kannatlik đ
Kui VM-id on Swap-i lĂ€inud â see ei ole normaalne olukord, mille tekkimist on parem vĂ€ltida.
Virtuaalmasina mÀlu jÔudluse peamised nÀitajad
NĂŒĂŒd oleme jĂ”udnud pĂ”hiteemani. VM-s mĂ€lu seisundi jĂ€lgimiseks on jĂ€rgmised nĂ€itajad:
Active â nĂ€itab mĂ€lumahtu (KB), millega VM pÀÀses eelmise mÔÔtmisperioodi jooksul.
Kasutus â sama, mis Aktiivne, kuid protsentides konfigureeritud mĂ€lu suurusest VM-is. Arvutatakse jĂ€rgmise valemi jĂ€rgi: aktiivne Ă· virtuaalmasina konfigureeritud mĂ€lu suurus.
KÔrge kasutuse ja aktiivse nÀitaja puhul ei ole see tingimata jÔudlusprobleemide mÀrk. Kui VM kasutab mÀlu intensiivselt (minimaalsetel tasemetel, pÀÀseb sellele juurde), ei tÀhenda see, et mÀlu jÀÀb vÀheks. Pigem on see pÔhjus vaadata, mis toimub OS-is.
VM-ide jaoks on olemas standardne Alarm mÀlu kasutuse kohta:

Jagatud â virtuaalmasina mĂ€lu maht, mis on deduplikatsioonitud TPS abil (kas VM sees vĂ”i VM-ide vahel).
Antud â fĂŒĂŒsilise mĂ€lu maht hostis (KB), mis on antud VM-ile. Kaasa arvatud jagatud.
Tarbitud (Antud â Jagatud) â fĂŒĂŒsilise mĂ€lu (KB) maht, mida VM tarbib hostist. Ei hĂ”lma jagatud.
Kui osa VM-i mĂ€lust antakse mitte fĂŒĂŒsilisest mĂ€lust hostis, vaid swap-failist vĂ”i mĂ€lu on vĂ”etud VM-ilt Balloon Driveri kaudu, ei arvestata seda mahtu Antud ja Tarbitud.
KĂ”rged Granted ja Consumed vÀÀrtused on tĂ€iesti normaalsed. OperatsioonisĂŒsteem vĂ”tab jĂ€rk-jĂ€rgult mĂ€lu hĂŒperviisorilt ja ei anna seda tagasi. Aja jooksul, kui virtuaalmasin (VM) aktiivselt töötab, jĂ”uavad need arvestite vÀÀrtused konfigureeritud mĂ€lu mahule ja seal pĂŒsivad.
Null â operatiivmĂ€lu maht (KByte), mis sisaldab nullide vÀÀrtusi. Selline mĂ€lu loetakse hĂŒperviisori poolt vabaks ja vĂ”ib olla antud teistele virtuaalmashinatele. PĂ€rast seda, kui kĂŒlalisoperatsioonisĂŒsteem on kirjutatud midagi nullitud mĂ€llu, muutub see Consumed-iks ja ei naase enam tagasi.
Reserved Overhead â operatiivmĂ€lu maht (KByte), mis on hĂŒperviisori poolt reserveeritud VM-i tööks. See on vĂ€ike maht, kuid see peab olema hostis olemas, vastasel juhul VM ei kĂ€ivitu.
Balloon â operatiivmĂ€lu maht (KByte), mis on VM-ilt vĂ€lja vĂ”etud Balloon Driver'i abil.
Compressed â operatiivmĂ€lu maht (KByte), mille Ă”nnestus tihendada.
Swapped â operatiivmĂ€lu maht (KByte), mis serveris fĂŒĂŒsilise mĂ€lu puudumisel tuli kettale.
Balloon ja ĂŒlejÀÀnud mĂ€lu tagastamise tehnikate arvestid on null.
Nii nÀeb vÀlja graafik mÀlu arvestitega normaalselt töötavale VM-ile, millel on 150 GB operatiivmÀlu.

Alloleval graafikul on VM-il selged probleemid. Graafiku all on nÀha, et sellele VM-ile on kasutatud kÔiki kirjeldatud mÀlu tehnikaid. Balloon on selle VM-i jaoks oluliselt suurem kui Consumed. Tegelikult on VM pigem surnud kui elus.

ESXTOP
Nagu CPU puhul, kui soovime operatiivselt hinnata olukorda hostis ja selle dĂŒnaamikat kuni 2-sekundiliste intervallidega, tasub kasutada ESXTOP-i.
ESXTOP mĂ€luekran kuvatakse klahviga âmâ ja nĂ€eb vĂ€lja jĂ€rgmine (valitud vĂ€ljad B,D,H,J,K,L,O):

Meie jaoks huvitavad on jÀrgmised parameetrid:
Mem overcommit avg â keskmine mĂ€lu ĂŒlepuhutud vÀÀrtus hostis 1, 5 ja 15 minuti jooksul. Kui see on ĂŒle nulli, on see pĂ”hjus vaadata, mis toimub, kuid see ei ole alati mĂ€rk probleemidest.
Ridades PMEM/MB ja VMKMEM/MB â teave serveri fĂŒĂŒsilise mĂ€lu ja VMkerneli poolt saadaval oleva mĂ€lu kohta. Siin on huvitav nĂ€ha vÀÀrtust minfree (MB-des) ja hosti mĂ€lu seisundit (meie juhul high).
Reas NUMA/MB vÔib nÀha operatiivmÀlu jaotust NUMA-sÔlmedes (soketites). Antud nÀites on jaotus ebavÔrdne, mis ei ole tegelikult vÀga hea.
Edasi on ĂŒldine statistika serveri kohta mĂ€lu taastamise tehnikate kohta:
PSHARE/MB â see on TPS statistika;
SWAP/MB â Swap'i kasutamise statistika;
ZIP/MB â mĂ€lu lehekĂŒlgede kokkusurumise statistika;
MEMCTL/MB â Balloon Driver'i kasutamise statistika.
Konkreetsete VM-ide kohta vÔib meid huvitada jÀrgmine teave. VM-ide nimed olen varjanud, et mitte publikule segadust tekitada :P. Kui mÔÔt ESXTOP on sarnane vSphere'i loendurile, siis toon vastava loenduri.
MEMSZ â mĂ€lu suurus, mis on VM-ile konfigureeritud (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + untouched.
GRANT â granted MB-des.
TCHD â aktiivne MB-des.
MCTL? â kas VM-l on Balloon Driver seadistatud.
MCTLSZ â Balloon MB-des.
MCTLGT â protsessori mĂ€lu (MB), mille ESXi soovib VM-ilt lĂ€bi Balloon Driver tagasi vĂ”tta (Memctl Target).
MCTLMAX â maksimaalne protsessori mĂ€lu (MB), mille ESXi vĂ”ib VM-ilt lĂ€bi Balloon Driver tagasi vĂ”tta.
SWCUR â praegune protsessori mĂ€lu (MB), mis on VM-ile anda Swap-failist.
SWGT â protsessori mĂ€lu (MB), mille ESXi soovib VM-ile anda Swap-failist (Swap Target).
Samuti saab ESXTOP'i kaudu vaadata pÔhjalikumat teavet NUMA-topoloogia kohta. Selle jaoks tuleb valida vÀljad D,G:

NHN â NUMA sĂ”lmed, kus VM asub. Siin saab kohe mĂ€rgata laiu VM-e, mis ei mahu ĂŒhe NUMA sĂ”lme sisse.
NRMEM â kui palju megabaite mĂ€lu VM kaugelt NUMA sĂ”lmest vĂ”tab.
NLMEM â kui palju megabaite mĂ€lu VM kohalikust NUMA sĂ”lmest vĂ”tab.
N%L â protsent VM mĂ€last kohalikul NUMA sĂ”lmel (kui alla 80% â vĂ”ivad tekkida jĂ”udlusprobleemid).
MĂ€lu hĂŒperviisoris
Kui hĂŒperviisori CPU loendurid ei esinda tavaliselt erilist huvi, siis mĂ€lu puhul on olukord vastupidine. KĂ”rge mĂ€lu kasutamine VM-is ei pruugi alati tĂ€hendada jĂ”udlusprobleemide olemasolu, kuid kĂ”rge mĂ€lu kasutamine hĂŒperviisoril aktiveerib mĂ€lu juhtimise tehnikate töö ja kutsub esile VM-i jĂ”udlusprobleemid. Peame jĂ€lgima Host Memory Usage alarmide eest, et vĂ€ltida VM-i sattumist Swap'i.


Unswap
Kui VM satub Swap'i, vĂ€heneb selle jĂ”udlus oluliselt. Ballooningu ja kokkusurumise jĂ€ljed kaovad kiiresti pĂ€rast vabade protsessori mĂ€lu tekkimist hostis, kuid tagasi naasmiseks Swap'ist protsessori mĂ€llu ei kiirusta virtuaalne masin ĂŒldse.
Enne versiooni ESXi 6.0 oli ainus usaldusvÀÀrne ja kiire viis VM-i Swap'ist vĂ€lja viia taaskĂ€ivitamine (tĂ€psemalt konteineri vĂ€ljalĂŒlitamine ja sisselĂŒlitamine). Alates ESXi 6.0-st ilmus kĂŒll mitte tĂ€iesti ametlik, kuid töötav ja usaldusvÀÀrne viis VM-i Swap'ist vĂ€lja viia. Ăhel konverentsil sain suhelda ĂŒhe VMware'i inseneriga, kes vastutab CPU ajakava eest. Ta kinnitas, et see meetod on tĂ€iesti töötav ja ohutu. Meie praktikas ei ole sellega ka mingeid probleeme mĂ€rgatud.
Ehkki kĂ€sklused VM-i vĂ€lja viimiseks Swap'ist Duncan Epping. Ma ei hakka kordama ĂŒksikasjalikku kirjeldust, lihtsalt toon nĂ€ite selle kasutamisest. Nagu ekraanipildilt nĂ€ha, kaob mĂ”ne aja pĂ€rast pĂ€rast nĂ€idatud kĂ€su tĂ€itmist Swap VM-ist.

NÔuanded RAM-i haldamiseks ESXi-s
LÔpetuseks toon vÀlja mÔned nÔuanded, mis aitavad teil vÀltida VM-i jÔudlusprobleeme RAM-i tÔttu:
- Ărge lubage RAM-i ĂŒleallokatsiooni tootmisklastrites. Soovitav on alati hoida ~20-30% vaba mĂ€lu klastris, et DRS-il (ja administraatoril) oleks manööverdusruumi ja et VM-id ei lĂ€heks Swap'i migreerimise ajal. Samuti Ă€rge unustage varu tĂ”rketaluvuseks. Ebamugav on, kui ĂŒhe serveri tĂ”rke korral ja VM-ide taaskĂ€ivitamisel HA kaudu lĂ€hevad osa masinaid veel Swap'i.
- KĂ”rge konsolideerimisega infrastruktuurides pĂŒĂŒdke mitte luua VM-e, mille mĂ€lu ĂŒletab poole hosti mĂ€lu. See aitab DRS-il ilma probleemideta jaotada virtuaalmasinad klastris serverite vahel. See reegel ei ole muidugi universaalne :).
- JÀlgige hosti mÀlukasutuse alarmi.
- Ărge unustage installida VM-idesse VMware Tools'i ja Ă€rge lĂŒlitage Ballooningut vĂ€lja.
- Kaaluge Inter-VM TPS-i lubamist ja Suurte LehekĂŒlgede vĂ€lja lĂŒlitamist VDI ja testkeskkondades.
- Kui VM-il on jÔudlusprobleeme, kontrollige, kas see kasutab mÀlurakendust kaugel NUMA sÔlmes.
- Viige VM Swap'ist vÀlja nii kiiresti kui vÔimalik! Peale selle, kui VM on Swap's, kannatab ilmselgelt ka ANDMEKESKUS.
Sellel ongi kĂ”ik RAM-i kohta. Allpool on artiklid teemal neile, kes soovivad sĂŒveneda detailidesse. JĂ€rgmine artikkel rÀÀgib salvestusest.
Kasulikud lingid
Allikas: habr.com
