VM našumo analizė VMware vSphere. 2 dalis: Atmintis

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

1 dalis. Apie centrinį procesorių

Šiame straipsnyje kalbėsime apie laisvosios kreipties atminties (RAM) našumo skaitiklius vSphere.
Atrodo, kad su atmintimi viskas aiškiau nei su procesoriumi: jei VM turi našumo problemų, sunku jų nepastebėti. Bet jei jų atsiranda, su jais susidoroti daug sunkiau. Bet pirmiausia pirmiausia.

Teorijos tiek

Virtualiųjų mašinų RAM paimama iš serverio, kuriame veikia VM, atminties. Tai gana akivaizdu :). Jei serverio RAM neužtenka visiems, ESXi pradeda naudoti atminties atkūrimo metodus, kad optimizuotų RAM suvartojimą. Priešingu atveju VM operacinės sistemos sugestų su RAM prieigos klaidomis.

Kokius metodus naudoti ESXi, nusprendžia priklausomai nuo RAM apkrovos:

Atminties būsena

Siena

Veikla

aukštas

400% minFree

Pasiekus viršutinę ribą, dideli atminties puslapiai suskaidomi į mažus (TPS veikia standartiniu režimu).

aiškus

100% minFree

Dideli atminties puslapiai suskaidomi į mažus, TPS priverstas dirbti.

minkštas

64% minFree

TPS + balionas

Kietas

32% minFree

TPS + Compress + Swap

žemas

16% minFree

Suspausti + Sukeisti + blokuoti

šaltinis

„minFree“ yra RAM, reikalinga hipervizoriui veikti.

Prieš ESXi 4.1 imtinai, minFree buvo ištaisyta pagal numatytuosius nustatymus – 6% serverio RAM (procentą buvo galima pakeisti naudojant ESXi parinktį Mem.MinFreePct). Vėlesnėse versijose dėl padidėjusio serverių atminties dydžio „minFree“ buvo pradėtas skaičiuoti pagal pagrindinio kompiuterio atminties kiekį, o ne kaip fiksuotą procentą.

MinFree (numatytoji) reikšmė apskaičiuojama taip:

„minFree“ rezervuotos atminties procentas

Atminties diapazonas

6%

0-4 GB

4%

4-12 GB

2%

12-28 GB

1%

Likusi atmintis

šaltinis

Pavyzdžiui, serverio su 128 GB RAM MinFree reikšmė būtų tokia:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Tikroji vertė gali skirtis keliais šimtais MB, tai priklauso nuo serverio ir RAM.

„minFree“ rezervuotos atminties procentas

Atminties diapazonas

Vertė už 128 GB

6%

0-4 GB

245,76 MB

4%

4-12 GB

327,68 MB

2%

12-28 GB

327,68 MB

1%

Likusios atminties (100 GB)

1024 MB

Paprastai produktyviems medynams normalia gali būti laikoma tik Aukšta būsena. Bandymų ir kūrimo stenduose gali būti priimtinos išvalytos / minkštos būsenos. Jei pagrindinio kompiuterio RAM yra mažesnė nei 64% MinFree, tada jame veikiančios VM tikrai turi našumo problemų.

Kiekvienoje būsenoje taikomos tam tikros atminties atkūrimo technikos, pradedant TPS, kuri praktiškai neįtakoja VM veikimo, ir baigiant Swapping. Papasakosiu daugiau apie juos.

Skaidrus puslapių bendrinimas (TPS). TPS yra, grubiai tariant, virtualios mašinos atminties puslapių dubliavimo pašalinimas serveryje.

ESXi ieško identiškų virtualios mašinos RAM puslapių, skaičiuodama ir lygindama puslapių maišos sumą, ir pašalina pasikartojančius puslapius, pakeisdama juos nuorodomis į tą patį puslapį serverio fizinėje atmintyje. Dėl to sumažėja fizinės atminties suvartojimas, o tam tikras atminties perteklius gali būti pasiektas nežymiai pablogėjus našumui arba jo visai nepablogėjus.

VM našumo analizė VMware vSphere. 2 dalis: Atmintis
šaltinis

Šis mechanizmas veikia tik 4 KB atminties puslapiuose (mažuose puslapiuose). Hipervizorius net nebando panaikinti 2 MB puslapių (didelių puslapių): galimybė rasti vienodus tokio dydžio puslapius nėra didelė.

Pagal numatytuosius nustatymus ESXi atmintį skiria dideliems puslapiams. Didelių puslapių skaidymas į mažus puslapius pradedamas, kai pasiekiamas aukštas būsenos slenkstis, ir priverstinis, kai pasiekiama išvalymo būsena (žr. hipervizoriaus būsenos lentelę).

Jei norite, kad TPS pradėtų veikti nelaukiant, kol užpildys pagrindinio kompiuterio RAM, skiltyje Advanced Options ESXi turite nustatyti reikšmę „Mem.AllocGuestLargePage“ iki 0 (numatytasis 1). Tada didelės atminties puslapių paskirstymas virtualiosioms mašinoms bus išjungtas.

Nuo 2014 m. gruodžio mėn. visuose ESXi leidimuose TPS tarp VM buvo išjungtas pagal numatytuosius nustatymus, nes buvo rastas pažeidžiamumas, kuris teoriškai leidžia pasiekti iš vienos VM prie kitos VM RAM. Išsami informacija čia. Neradau informacijos apie praktinį TPS pažeidžiamumo išnaudojimo įgyvendinimą.

TPS politika valdoma naudojant išplėstinę parinktį „Mem.ShareForceSalting“ ESXi:
0 – Inter-VM TPS. TPS veikia skirtingų VM puslapiuose;
1 – TPS VM su ta pačia „sched.mem.pshare.salt“ reikšme VMX;
2 (numatytasis) – vidinis VM TPS. TPS veikia puslapiuose VM viduje.

Tikrai prasminga bandymų stenduose išjungti didelius puslapius ir įjungti Inter-VM TPS. Jis taip pat gali būti naudojamas stendams, kuriuose yra daug to paties tipo VM. Pavyzdžiui, stovuose su VDI fizinės atminties sutaupymas gali siekti keliasdešimt procentų.

atminties balionavimas. Balionavimas nebėra tokia nekenksminga ir skaidri technika VM operacinei sistemai kaip TPS. Tačiau tinkamai pritaikę galite gyventi ir net dirbti su Ballooning.

Kartu su „Vmware Tools“ VM įdiegta speciali tvarkyklė, vadinama „Balloon Driver“ (dar žinoma kaip vmmemctl). Kai hipervizoriuje pradeda trūkti fizinės atminties ir jis pereina į minkštąją būseną, ESXi prašo VM atgauti nepanaudotą RAM per šią baliono tvarkyklę. Vairuotojas, savo ruožtu, veikia operacinės sistemos lygiu ir prašo iš jos laisvos atminties. Hipervizorius mato, kuriuos fizinės atminties puslapius užėmė baliono tvarkyklė, paima atmintį iš virtualios mašinos ir grąžina ją pagrindiniam kompiuteriui. OS veikimo problemų nėra, nes OS lygiu atmintį užima baliono tvarkyklė. Pagal numatytuosius nustatymus „Balloon Driver“ gali užimti iki 65% VM atminties.

Jei VM neįdiegti VMware įrankiai arba Ballooning išjungtas (nerekomenduoju, bet yra KB:), hipervizorius iškart pereina prie griežtesnių atminties šalinimo technikų. Išvada: įsitikinkite, kad „VMware Tools“ yra VM.

VM našumo analizė VMware vSphere. 2 dalis: Atmintis
Balloon Driver veikimą galima patikrinti iš OS per VMware Tools.

atminties suspaudimas. Ši technika naudojama, kai ESXi pasiekia kietąją būseną. Kaip rodo pavadinimas, ESXi bando sumažinti 4 KB RAM puslapį iki 2 KB ir taip atlaisvinti vietos fizinėje serverio atmintyje. Ši technika žymiai padidina prieigos prie VM RAM puslapių turinio laiką, nes pirmiausia puslapis turi būti išspaustas. Kartais ne visus puslapius galima suspausti, o pats procesas užtrunka. Todėl ši technika praktiškai nėra labai efektyvi.

atminties keitimas. Po trumpo atminties suspaudimo etapo ESXi beveik neišvengiamai (jei VM nepaliko kitiems pagrindiniams kompiuteriams arba išjungė) persijungs į keitimą. Ir jei liko labai mažai atminties (žema būsena), hipervizorius taip pat nustoja skirti atminties puslapius VM, o tai gali sukelti problemų VM svečių OS.

Štai kaip veikia keitimas. Kai įjungiate virtualią mašiną, jai sukuriamas failas su plėtiniu .vswp. Dydžiu jis prilygsta VM nerezervuotai RAM: tai skirtumas tarp sukonfigūruotos ir rezervuotos atminties. Kai veikia keitimas, ESXi iškelia virtualios mašinos atminties puslapius į šį failą ir pradeda dirbti su juo vietoj fizinės serverio atminties. Žinoma, tokia „operatyvioji“ atmintis yra keliomis eilėmis lėtesnė nei tikroji, net jei .vswp yra greitoje saugykloje.

Skirtingai nuo „Ballooning“, kai nenaudojami puslapiai paimami iš VM, naudojant keitimą, puslapiai, kuriuos aktyviai naudoja OS arba programos VM viduje, gali būti perkelti į diską. Dėl to VM našumas sumažėja iki užšalimo taško. VM formaliai veikia ir bent jau galima tinkamai išjungti iš OS. Jei esi kantrus 😉

Jei VM nuėjo į Swap, tai yra neįprasta situacija, kurios, jei įmanoma, geriausia vengti.

Pagrindiniai VM atminties našumo skaitikliai

Taigi mes priėjome prie pagrindinio dalyko. Norėdami stebėti VM atminties būseną, yra šie skaitikliai:

Aktyvus — rodomas RAM kiekis (KB), prie kurio VM gavo prieigą per ankstesnį matavimo laikotarpį.

Naudojimas - toks pat kaip aktyvus, bet procentais nuo sukonfigūruotos VM RAM. Apskaičiuojama pagal šią formulę: aktyvi ÷ virtualios mašinos sukonfigūruotas atminties dydis.
Atitinkamai High Usage ir Active ne visada rodo VM veikimo problemas. Jei VM agresyviai naudoja atmintį (bent jau gauna prieigą prie jos), tai nereiškia, kad nepakanka atminties. Greičiau tai proga pamatyti, kas vyksta OS.
Yra standartinis VM atminties naudojimo įspėjimas:

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

Bendri - VM RAM kiekis, panaikintas naudojant TPS (VM viduje arba tarp VM).

Suteikiama - fizinės prieglobos atminties (KB), kuri buvo suteikta VM, kiekis. Apima bendrinamą.

Suvartojo (Granted – Shared) – fizinės atminties kiekis (KB), kurį VM sunaudoja iš pagrindinio kompiuterio. Neapima bendrinamų.

Jei dalis VM atminties suteikiama ne iš fizinės pagrindinio kompiuterio atminties, o iš apsikeitimo failo arba atmintis paimama iš VM per Balloon Driver, ši suma neatsižvelgiama į Suteiktą ir sunaudotą.
Didelės suteiktos ir sunaudotos vertės yra visiškai normalios. Operacinė sistema palaipsniui paima atmintį iš hipervizoriaus ir jos negrąžina. Laikui bėgant, aktyviai veikiančioje VM, šių skaitiklių reikšmės artėja prie sukonfigūruotos atminties kiekio ir ten išlieka.

Nulis — VM RAM kiekis (KB), kuriame yra nuliai. Tokią atmintį hipervizorius laiko laisva ir gali būti suteikta kitoms virtualioms mašinoms. Kai svečių OS įrašo ką nors į nulinę atmintį, ji patenka į Consumed ir negrįžta atgal.

Rezervuota pridėtinės išlaidos — VM operatyviosios atminties kiekis (KB), kurį hipervizorius rezervavo VM darbui. Tai nedidelė suma, tačiau ji turi būti pasiekiama pagrindiniame kompiuteryje, kitaip VM nepasileis.

Balionas — RAM kiekis (KB), paimtas iš VM naudojant baliono tvarkyklę.

Suspaustas - suspaustos RAM kiekis (KB).

Susikeitė - RAM kiekis (KB), kuris dėl fizinės atminties trūkumo serveryje buvo perkeltas į diską.
Balionų ir kitų atminties atkūrimo metodų skaitikliai yra nuliniai.

Taip atrodo grafikas su atminties skaitikliais normaliai veikiančiai VM su 150 GB RAM.

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

Toliau pateiktoje diagramoje VM turi akivaizdžių problemų. Po diagrama matote, kad šiai VM buvo naudojami visi aprašyti darbo su RAM būdai. Šios VM balionas yra daug didesnis nei Consumed. Tiesą sakant, VM yra daugiau miręs nei gyvas.

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

ESXTOP

Kaip ir procesoriaus atveju, jei norime greitai įvertinti pagrindinio kompiuterio situaciją, taip pat jo dinamiką iki 2 sekundžių intervalu, turėtume naudoti ESXTOP.

ESXTOP ekranas pagal atmintį iškviečiamas mygtuku "m" ir atrodo taip (pasirinkti laukai B, D, H, J, K, L, O):

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

Mus domina šie parametrai:

Mem viršyti įsipareigojimų vid - vidutinė prieglobos atminties pertekliaus reikšmė 1, 5 ir 15 minučių. Jei jis viršija nulį, tai yra proga pamatyti, kas vyksta, bet ne visada problemų rodiklis.

Eilėmis PMEM/MB и VMKMEM/MB - informacija apie fizinę serverio atmintį ir VMkernel turimą atmintį. Iš čia įdomių dalykų galite pamatyti minfree reikšmę (MB), pagrindinio kompiuterio būseną atmintyje (mūsų atveju aukštą).

Eilėje NUMA/MB galite matyti RAM paskirstymą pagal NUMA mazgus (socketus). Šiame pavyzdyje pasiskirstymas yra netolygus, o tai iš esmės nėra labai geras.

Toliau pateikiama bendra serverio statistika apie atminties atkūrimo metodus:

PSHARE/MB yra TPS statistika;

SWAP/MB — Apsikeitimo sandorių naudojimo statistika;

ZIP / MB — atminties puslapių glaudinimo statistika;

MEMCTL/MB - Balion Driver naudojimo statistika.

Dėl atskirų VM mus gali sudominti ši informacija. Paslėpiau VM pavadinimus, kad nesupainiočiau publikos :). Jei ESXTOP metrika yra panaši į vSphere skaitiklį, pateikiu atitinkamą skaitiklį.

MEMSZ — VM sukonfigūruotos atminties kiekis (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + nepaliestas.

SUTEIKIMAS — Suteikta MB.

TCHD — Aktyvus MB.

MCTL? – ar VM įdiegta baliono tvarkyklė.

MCTLSZ — Balionas į MB.

MCTLGT — RAM kiekis (MB), kurį ESXi nori paimti iš VM per Balloon Driver (Memctl Target).

MCTLMAX - didžiausias RAM kiekis (MB), kurį ESXi gali paimti iš VM per baliono tvarkyklę.

SWCUR — dabartinis RAM kiekis (MB), priskirtas VM iš apsikeitimo failo.

S.W.G.T. - RAM kiekis (MB), kurį ESXi nori suteikti VM iš Swap failo (Swap Target).

Be to, naudodami ESXTOP, galite pamatyti išsamesnę informaciją apie VM NUMA topologiją. Norėdami tai padaryti, pasirinkite D, G laukus:

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

MAŽAS – NUMA mazgai, kuriuose yra VM. Čia iškart galima pastebėti plačias vm, kurios netelpa viename NUMA mazge.

NRMEM - kiek megabaitų atminties VM užima iš nuotolinio NUMA mazgo.

NLMEM - kiek megabaitų atminties VM paima iš vietinio NUMA mazgo.

N%L – VM atminties procentinė dalis vietiniame NUMA mazge (jei mažesnė nei 80%, gali kilti našumo problemų).

Atmintis hipervizoriuje

Jei hipervizoriaus procesoriaus skaitikliai paprastai nėra ypač svarbūs, tada su atmintimi padėtis yra atvirkštinė. Didelis atminties naudojimas VM ne visada rodo našumo problemą, bet didelis atminties naudojimas hipervizoriuje suaktyvina atminties valdymo metodus ir sukelia našumo problemų VM. Pagrindinio kompiuterio atminties naudojimo įspėjimai turi būti stebimi, kad VM nepatektų į apsikeitimą.

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

iškeisti

Jei VM yra apsikeitimo režimu, jos našumas labai sumažėja. Ballooning ir suspaudimo pėdsakai greitai išnyksta, kai pagrindiniame kompiuteryje atsiranda nemokama RAM, tačiau virtuali mašina neskuba grįžti iš Swap į serverio RAM.
Iki ESXi 6.0 vienintelis patikimas ir greitas būdas pašalinti VM iš Swap buvo paleisti iš naujo (tiksliau, išjungti / įjungti konteinerį). Pradedant nuo ESXi 6.0, nors ir ne visai oficialus, pasirodė veikiantis ir patikimas būdas pašalinti VM iš Swap. Vienoje iš konferencijų man pavyko pasikalbėti su vienu iš VMware inžinierių, atsakingų už CPU planuoklį. Jis patvirtino, kad metodas yra gana veiksmingas ir saugus. Mūsų patirtis rodo, kad su tuo taip pat nebuvo jokių problemų.

Faktinės komandos, skirtos VM pašalinti iš apsikeitimo aprašyta Duncan Epping. Nekartosiu išsamaus aprašymo, tiesiog pateiksiu jo naudojimo pavyzdį. Kaip matote ekrano kopijoje, praėjus kuriam laikui po nurodytų komandų vykdymo, Swap dingsta VM.

VM našumo analizė VMware vSphere. 2 dalis: Atmintis

ESXi atminties valdymo patarimai

Galiausiai, čia yra keletas patarimų, kurie padės išvengti VM veikimo problemų dėl RAM:

  • Venkite perteklinės atminties produktyviose grupėse. Pageidautina, kad klasteryje visada būtų ~20-30% laisvos atminties, kad DRS (ir administratoriui) būtų erdvės manevruoti, o VM migracijos metu nepatektų į Swap. Taip pat nepamirškite apie gedimų tolerancijos ribą. Nemalonu, kai sugedus vienam serveriui ir VM perkraunant naudojant HA, kai kurios mašinos taip pat pereina į Swap.
  • Labai konsoliduotose infrastruktūrose NEbandykite kurti VM su daugiau nei puse pagrindinio kompiuterio atminties. Tai vėl padės DRS paskirstyti virtualias mašinas klasterio serveriuose be jokių problemų. Ši taisyklė, žinoma, nėra universali :).
  • Stebėkite pagrindinio kompiuterio atminties naudojimo įspėjimą.
  • Nepamirškite VM įdiegti „VMware Tools“ ir neišjunkite „Ballooning“.
  • Apsvarstykite galimybę įjungti Inter-VM TPS ir išjungti didelius puslapius VDI ir bandomojoje aplinkoje.
  • Jei VM kyla našumo problemų, patikrinkite, ar ji nenaudoja atminties iš nuotolinio NUMA mazgo.
  • Kuo greičiau pašalinkite savo VM iš Swap! Be kita ko, jei VM yra apsikeitimo režimu, dėl akivaizdžių priežasčių nukenčia saugojimo sistema.

Tai viskas apie RAM. Žemiau yra susijęs straipsnis tiems, kurie nori įsigilinti į detales. Kitas straipsnis bus skirtas storadzh.

Naudingos nuorodoshttp://www.yellow-bricks.com/2015/03/02/what-happens-at-which-vsphere-memory-state/
http://www.yellow-bricks.com/2013/06/14/how-does-mem-minfreepct-work-with-vsphere-5-0-and-up/
https://www.vladan.fr/vmware-transparent-page-sharing-tps-explained/
http://www.yellow-bricks.com/2016/06/02/memory-pages-swapped-can-unswap/
https://kb.vmware.com/s/article/1002586
https://www.vladan.fr/what-is-vmware-memory-ballooning/
https://kb.vmware.com/s/article/2080735
https://kb.vmware.com/s/article/2017642
https://labs.vmware.com/vmtj/vmware-esx-memory-resource-management-swap
https://blogs.vmware.com/vsphere/2013/10/understanding-vsphere-active-memory.html
https://www.vmware.com/support/developer/converter-sdk/conv51_apireference/memory_counters.html
https://docs.vmware.com/en/VMware-vSphere/6.5/vsphere-esxi-vcenter-server-65-monitoring-performance-guide.pdf

Šaltinis: www.habr.com

Добавить комментарий