Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Časť 1. O CPU

V tomto článku budeme hovoriť o počítadlách výkonu pamäte RAM (Random Access Memory) vo vSphere.
Zdá sa, že s pamäťou je všetko jasnejšie ako s procesorom: ak sa na virtuálnom počítači vyskytnú problémy s výkonom, je ťažké si ich nevšimnúť. Ale ak sa objavia, je oveľa ťažšie sa s nimi vyrovnať. Ale prvé veci.

Niektoré teórie

RAM virtuálnych počítačov sa berie z pamäte servera, na ktorom sú spustené virtuálne počítače. To je úplne jasné :). Ak RAM servera nestačí pre každého, ESXi začne používať techniky rekultivácie pamäte. V opačnom prípade by operačné systémy VM zlyhali s chybami prístupu k RAM.

ESXi rozhoduje, ktoré techniky použiť v závislosti od zaťaženia RAM:

Stav pamäte

hraničné

Činnosť

vysoký

400 % minZdarma

Po dosiahnutí hornej hranice sa veľké pamäťové stránky rozdelia na malé (TPS pracuje v štandardnom režime).

Vymazať

100 % minZdarma

Veľké pamäťové stránky sú rozdelené na malé, TPS je nútené.

Mäkký

64 % minZdarma

TPS + balón

Tvrdý

32 % minZdarma

TPS + Komprimovať + Swap

Nízky

16 % minZdarma

Komprimovať + Swap + Blokovať

Zdroj

minFree je RAM potrebná na spustenie hypervízora.

Až do ESXi 4.1 vrátane bolo minFree predvolene opravené – 6 % RAM servera (percento bolo možné zmeniť pomocou možnosti Mem.MinFreePct na ESXi). V neskorších verziách, kvôli nárastu pamäte na serveroch, sa minFree začalo počítať na základe množstva pamäte hostiteľa, a nie ako pevná percentuálna hodnota.

Hodnota minFree (predvolená) sa vypočíta takto:

Percento pamäte vyhradenej pre minFree

Rozsah pamäte

6%

0-4 GB

4%

4-12 GB

2%

12-28 GB

1%

Zostávajúca pamäť

Zdroj

Napríklad pre server so 128 GB RAM bude hodnota MinFree nasledovná:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Skutočná hodnota sa môže líšiť o niekoľko stoviek MB v závislosti od servera a pamäte RAM.

Percento pamäte vyhradenej pre minFree

Rozsah pamäte

Hodnota za 128 GB

6%

0-4 GB

245,76 MB

4%

4-12 GB

327,68 MB

2%

12-28 GB

327,68 MB

1%

Zostávajúca pamäť (100 GB)

1024 MB

V prípade produktívnych porastov možno za normálny považovať len vysoký stav. Pre testovacie a vývojové lavice môžu byť prijateľné stavy Clear/Soft. Ak je RAM na hostiteľovi menšia ako 64 % MinFree, potom virtuálne počítače, ktoré na ňom bežia, majú určite problémy s výkonom.

V každom stave sa používajú určité techniky rekultivácie pamäte, počnúc TPS, ktorá nemá prakticky žiadny vplyv na výkon VM, až po Swapping. Poviem vám o nich viac.

Transparentné zdieľanie stránok (TPS). TPS je, zhruba povedané, deduplikácia stránok RAM virtuálnych strojov na serveri.

ESXi hľadá identické stránky RAM virtuálneho stroja počítaním a porovnávaním hash súčtu stránok a odstraňuje duplicitné stránky a nahrádza ich odkazmi na rovnakú stránku vo fyzickej pamäti servera. Výsledkom je, že spotreba fyzickej pamäte je znížená a určitý nadmerný odber pamäte možno dosiahnuť prakticky bez vplyvu na výkon.

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť
Zdroj

Tento mechanizmus funguje len pre pamäťové stránky s veľkosťou 4 KB (malé stránky). Hypervízor sa ani nepokúša deduplikovať stránky s veľkosťou 2 MB (veľké stránky): šanca nájsť identické stránky tejto veľkosti nie je veľká.

ESXi štandardne prideľuje pamäť veľkým stránkam. Rozdelenie veľkých stránok na malé stránky sa začína, keď sa dosiahne prah stavu High, a je vynútené, keď sa dosiahne stav Clear (pozri tabuľku stavov hypervízora).

Ak chcete, aby TPS začal pracovať bez čakania na zaplnenie hostiteľskej pamäte RAM, musíte nastaviť hodnotu v rozšírených možnostiach ESXi “Mem.AllocGuestLargePage” na 0 (predvolená hodnota 1). Potom bude prideľovanie veľkých stránok pamäte pre virtuálne stroje zakázané.

Od decembra 2014 je vo všetkých vydaniach ESXi TPS medzi virtuálnymi počítačmi predvolene vypnuté, pretože bola zistená zraniteľnosť, ktorá teoreticky umožňuje jednému virtuálnemu počítaču prístup k RAM iného virtuálneho počítača. Podrobnosti tu. Nestretol som sa s informáciami o praktickej implementácii zneužitia zraniteľnosti TPS.

Politika TPS sa ovláda prostredníctvom rozšírenej možnosti "Mem.ShareForceSalting" na ESXi:
0 - Inter-VM TPS. TPS funguje pre stránky rôznych VM;
1 – TPS pre VM s rovnakou hodnotou „sched.mem.pshare.salt“ vo VMX;
2 (predvolené) – Intra-VM TPS. TPS funguje pre stránky vo virtuálnom počítači.

Určite má zmysel zakázať veľké stránky a povoliť Inter-VM TPS na testovacích stoloch. Dá sa to použiť aj pre stojany s veľkým počtom podobných VM. Napríklad na stojanoch s VDI môže úspora fyzickej pamäte dosiahnuť desiatky percent.

Pamäťové balónovanie. Balónovanie už nie je taká neškodná a transparentná technika pre operačný systém VM ako TPS. Ale ak sa používa správne, môžete žiť a dokonca pracovať s balónom.

Spolu s Vmware Tools je na VM nainštalovaný špeciálny ovládač s názvom Balloon Driver (aka vmmemctl). Keď hypervízoru začne dochádzať fyzická pamäť a prejde do mäkkého stavu, ESXi požiada VM, aby znovu získal nevyužitú RAM prostredníctvom tohto ovládača balónika. Ovládač zasa funguje na úrovni operačného systému a žiada od neho voľnú pamäť. Hypervízor vidí, ktoré stránky fyzickej pamäte Balloon Driver obsadil, vezme pamäť z virtuálneho počítača a vráti ju hostiteľovi. S prevádzkou OS nie sú žiadne problémy, pretože na úrovni OS je pamäť obsadená ovládačom balónika. V predvolenom nastavení môže Balloon Driver zaberať až 65 % pamäte VM.

Ak na virtuálnom počítači nie sú nainštalované nástroje VMware alebo je funkcia Ballooning vypnutá (neodporúčam to, ale existuje KB:), hypervízor okamžite prejde na prísnejšie techniky odstraňovania pamäte. Záver: uistite sa, že nástroje VMware sú na virtuálnom počítači.

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť
Fungovanie Balloon Driver je možné skontrolovať z operačného systému cez VMware Tools.

Kompresia pamäte. Táto technika sa používa, keď ESXi dosiahne tvrdý stav. Ako už názov napovedá, ESXi sa pokúša skomprimovať 4KB stránku RAM do 2KB, čím uvoľní miesto vo fyzickej pamäti servera. Táto technika výrazne zvyšuje čas prístupu k obsahu stránok VM RAM, pretože stránku je potrebné najskôr dekomprimovať. Niekedy nie je možné komprimovať všetky stránky a samotný proces nejaký čas trvá. Preto táto technika nie je v praxi veľmi účinná.

Výmena pamäte. Po krátkej fáze kompresie pamäte sa ESXi takmer nevyhnutne (ak sa virtuálne počítače nepresunuli na iných hostiteľov alebo nie sú vypnuté) prepne na Swapping. A ak zostáva veľmi málo pamäte (nízky stav), potom hypervízor tiež zastaví prideľovanie pamäťových stránok virtuálnemu počítači, čo môže spôsobiť problémy v hosťujúcom OS virtuálneho počítača.

Takto funguje Swapping. Po zapnutí virtuálneho počítača sa preň vytvorí súbor s príponou .vswp. Veľkosťou sa rovná nevyhradenej pamäti RAM virtuálneho počítača: toto je rozdiel medzi nakonfigurovanou a rezervovanou pamäťou. Keď je spustená výmena, ESXi zamieňa stránky pamäte virtuálneho počítača do tohto súboru a začne s ním pracovať namiesto fyzickej pamäte servera. Samozrejme, že takáto „RAM“ pamäť je o niekoľko rádov pomalšia ako skutočná pamäť, aj keď je .vswp na rýchlom úložisku.

Na rozdiel od Ballooningu, keď sa nepoužívané stránky prevezmú z VM, pomocou Swappingu stránky, ktoré aktívne používa OS alebo aplikácie vo VM, je možné presunúť na disk. Výsledkom je, že výkon VM klesá až na bod mrazu. Virtuálny počítač je formálne funkčný a prinajmenšom ho možno správne deaktivovať z operačného systému. Ak budete trpezliví 😉

Ak virtuálne počítače prešli na Swap, ide o núdzovú situáciu, ktorej je najlepšie sa vyhnúť, ak je to možné.

Základné počítadlá výkonu pamäte virtuálneho stroja

Tak sme sa dostali k tomu hlavnému. Na monitorovanie stavu pamäte VM existujú nasledujúce počítadlá:

aktívny — zobrazuje množstvo pamäte RAM (KB), ku ktorej VM pristupoval v predchádzajúcom období merania.

Ako používať prášok CBD? — rovnaké ako Active, ale ako percento nakonfigurovanej RAM virtuálneho počítača. Vypočítané pomocou nasledujúceho vzorca: aktívny ÷ veľkosť pamäte nakonfigurovaná virtuálnym počítačom.
Vysoké využitie a aktívne nie sú vždy indikátorom problémov s výkonom VM. Ak VM agresívne využíva pamäť (aspoň k nej pristupuje), neznamená to, že nie je dostatok pamäte. Je to skôr dôvod pozrieť sa na to, čo sa deje v OS.
Existuje štandardný alarm pre využitie pamäte pre VM:

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Zdieľané — množstvo pamäte RAM VM deduplikovanej pomocou TPS (v rámci VM alebo medzi VM).

udelený — množstvo fyzickej pamäte hostiteľa (KB), ktorá bola pridelená virtuálnemu počítaču. Povolí zdieľané.

spotrebovanej (Granted – Shared) – množstvo fyzickej pamäte (KB), ktorú VM spotrebuje od hostiteľa. Nezahŕňa Zdieľané.

Ak časť pamäte VM nie je poskytnutá z fyzickej pamäte hostiteľa, ale z odkladacieho súboru, alebo ak sa pamäť berie z VM cez Balloon Driver, toto množstvo sa neberie do úvahy v časti Granted and Consumed.
Vysoké udelené a spotrebované hodnoty sú úplne normálne. Operačný systém postupne berie pamäť z hypervízora a nevracia ju späť. Postupom času sa v aktívne spustenom virtuálnom počítači hodnoty týchto počítadiel priblížia k množstvu nakonfigurovanej pamäte a zostanú tam.

Nula — množstvo pamäte RAM VM (KB), ktorá obsahuje nuly. Takúto pamäť považuje hypervízor za voľnú a môže ju poskytnúť iným virtuálnym strojom. Keď hosťujúci OS niečo zapíše do vynulovanej pamäte, prejde do stavu Consumed a nevráti sa späť.

Vyhradená réžia — množstvo pamäte RAM VM (KB) vyhradenej hypervízorom na prevádzku VM. Toto je malé množstvo, ale musí byť dostupné na hostiteľovi, inak sa VM nespustí.

Balón — množstvo pamäte RAM (KB) odstránenej z virtuálneho počítača pomocou ovládača Balloon Driver.

stlačený — množstvo pamäte RAM (KB), ktorá bola komprimovaná.

Vymenil — množstvo pamäte RAM (KB), ktorá sa v dôsledku nedostatku fyzickej pamäte na serveri presunula na disk.
Počítadlá balónových a iných techník obnovy pamäte sú nulové.

Takto vyzerá graf s počítadlami pamäte normálne pracujúceho VM so 150 GB RAM.

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

V grafe nižšie má VM zjavné problémy. Pod grafom môžete vidieť, že pre tento VM boli použité všetky opísané techniky pre prácu s RAM. Balón pre tento VM je oveľa väčší ako spotrebovaný. V skutočnosti je VM viac mŕtvy ako živý.

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

ESXTOP

Podobne ako pri CPU, ak chceme rýchlo posúdiť situáciu na hostiteľovi, ako aj jeho dynamiku s intervalom do 2 sekúnd, mali by sme použiť ESXTOP.

Obrazovka pamäte ESXTOP sa vyvolá tlačidlom „m“ a vyzerá takto (vybraté polia B,D,H,J,K,L,O):

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Nasledujúce parametre nás budú zaujímať:

Priem — priemerná hodnota nadmerného odberu pamäte na hostiteľovi na 1, 5 a 15 minút. Ak je nad nulou, potom je to dôvod pozrieť sa na to, čo sa deje, ale nie vždy indikátorom problémov.

V riadkoch PMEM/MB и VMKMEM/MB — informácie o fyzickej pamäti servera a pamäti dostupnej pre VMkernel. Medzi zaujímavosti tu môžete vidieť hodnotu minfree (v MB), stav hostiteľa v pamäti (v našom prípade vysoký).

V rade NUMA/MB môžete vidieť distribúciu RAM medzi NUMA uzlami (zásuvkami). V tomto príklade je rozloženie nerovnomerné, čo v zásade nie je veľmi dobré.

Nasleduje všeobecná štatistika servera pre techniky regenerácie pamäte:

PSHARE/MB — toto sú štatistiky TPS;

SWAP/MB — Swap štatistiky používania;

ZIP/MB — štatistiky kompresie stránky pamäte;

MEMCTL/MB — Štatistika používania Balloon Driver.

Pre jednotlivé VM nás môžu zaujímať nasledujúce informácie. Mená VM som schoval, aby som nezmiatol publikum :). Ak je metrika ESXTOP podobná počítadlu vo vSphere, poskytnem zodpovedajúce počítadlo.

MEMSZ — množstvo pamäte nakonfigurovanej na VM (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + nedotknuté.

GRANT — Uvádza sa v MB.

TCHD — Aktívne v MB.

MCTL? — či je na virtuálnom počítači nainštalovaný ovládač Balloon Driver.

MCTLSZ — Balón do MB.

MCTLGT — množstvo pamäte RAM (MB), ktorú chce ESXi odstrániť z virtuálneho počítača pomocou ovládača balónika (Memctl Target).

MCTLMAX — maximálne množstvo pamäte RAM (MB), ktoré môže ESXi odstrániť z virtuálneho počítača pomocou ovládača balónika.

SWCUR — aktuálne množstvo pamäte RAM (MB) pridelenej virtuálnemu počítaču zo súboru swap.

S.W.G.T. — množstvo pamäte RAM (MB), ktorú chce ESXi poskytnúť virtuálnemu počítaču zo súboru swap (swap Target).

Môžete tiež zobraziť podrobnejšie informácie o topológii NUMA virtuálneho počítača prostredníctvom ESXTOP. Ak to chcete urobiť, vyberte polia D, G:

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

MALÝ – NUMA uzlov, na ktorých sa nachádza VM. Tu si môžete okamžite všimnúť široké vm, ktoré sa nezmestia na jeden uzol NUMA.

NRMEM – koľko megabajtov pamäte zaberá VM zo vzdialeného uzla NUMA.

NLMEM – koľko megabajtov pamäte zaberá VM z lokálneho uzla NUMA.

N%L – percento pamäte VM na lokálnom uzle NUMA (ak je menej ako 80 %, môžu nastať problémy s výkonom).

Pamäť na hypervízore

Ak počítadlá CPU pre hypervízor zvyčajne nie sú mimoriadne zaujímavé, potom s pamäťou je situácia opačná. Vysoké využitie pamäte na virtuálnom počítači neznamená vždy problém s výkonom, ale vysoké využitie pamäte na hypervízore spúšťa techniky správy pamäte a spôsobuje problémy s výkonom virtuálneho počítača. Musíte monitorovať alarmy využitia pamäte hostiteľa a zabrániť virtuálnym počítačom dostať sa do swapu.

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Vymeniť

Ak sa virtuálny počítač zachytí vo výmene, jeho výkon sa výrazne zníži. Stopy balónovania a kompresie rýchlo zmiznú, keď sa na hostiteľovi objaví voľná RAM, ale virtuálny počítač sa neponáhľa s návratom z výmeny do RAM servera.
Pred ESXi 6.0 bol jediný spoľahlivý a rýchly spôsob, ako odstrániť VM zo Swapu, reštartovať (presnejšie vypnúť/zapnúť kontajner). Počnúc ESXi 6.0, aj keď nie úplne oficiálnym, sa objavil funkčný a spoľahlivý spôsob, ako odstrániť VM zo Swapu. Na jednej z konferencií som mal možnosť hovoriť s jedným z inžinierov VMware zodpovedných za plánovač CPU. Potvrdil, že metóda je celkom funkčná a bezpečná. Podľa našich skúseností s tým tiež neboli žiadne problémy.

Skutočné príkazy na odstránenie VM z Swap popísané Duncan Epping. Nebudem opakovať podrobný popis, len uvediem príklad jeho použitia. Ako môžete vidieť na snímke obrazovky, nejaký čas po vykonaní zadaného príkazu Swap na VM zmizne.

Analýza výkonu VM vo VMware vSphere. Časť 2: Pamäť

Tipy na správu pamäte RAM na ESXi

Nakoniec tu je niekoľko tipov, ktoré vám pomôžu vyhnúť sa problémom s výkonom VM kvôli RAM:

  • Vyhnite sa nadmernému odberu pamäte RAM v produktívnych klastroch. Je vhodné mať vždy ~20-30% voľnej pamäte v klastri, aby DRS (a správca) mali priestor na manévrovanie a VM počas migrácie neprešli do Swapu. Tiež nezabudnite na rezervu pre toleranciu chýb. Je nepríjemné, keď keď jeden server zlyhá a VM sa reštartuje pomocou HA, niektoré počítače tiež prejdú na Swap.
  • Vo vysoko konsolidovaných infraštruktúrach sa NESKÚŠAJTE VYTVÁRAŤ VM s pamäťou väčšou ako polovica pamäte hostiteľa. To opäť pomôže DRS distribuovať virtuálne stroje medzi klastrové servery bez akýchkoľvek problémov. Toto pravidlo, samozrejme, nie je univerzálne :).
  • Dávajte pozor na alarm využitia pamäte hostiteľa.
  • Nezabudnite nainštalovať VMware Tools na VM a nevypínajte Ballooning.
  • Zvážte aktiváciu Inter-VM TPS a zakázanie veľkých stránok vo VDI a testovacích prostrediach.
  • Ak má virtuálny počítač problémy s výkonom, skontrolujte, či používa pamäť zo vzdialeného uzla NUMA.
  • Odstráňte VM zo Swapu čo najrýchlejšie! Okrem iného, ​​ak je VM vo Swape, úložný systém trpí z pochopiteľných dôvodov.

To je z mojej strany o RAM všetko. Nižšie sú uvedené súvisiace články pre tých, ktorí chcú ísť hlbšie. Ďalší článok bude venovaný skladovaniu.

Užitočné odkazyhttp://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

Zdroj: hab.com

Pridať komentár