Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

Part 1. Circa u CPU

In questu articulu, parlemu di i contatori di rendiment di memoria d'accessu aleatoriu (RAM) in vSphere.
Sembra chì cù a memoria tuttu hè più chjaru ch'è cù u processatore: se una VM hà prublemi di rendiment, hè difficiule di ùn avè micca nutatu. Ma s'ellu si prisentanu, hè assai più difficiule di trattà cun elli. Ma prima cosa prima.

Un pocu di tiurìa

A RAM di e macchine virtuali hè presa da a memoria di u servitore nantu à quale i VM sò in esecuzione. Hè abbastanza evidenti :). Se a RAM di u servitore ùn hè micca abbastanza per tutti, ESXi cumencia à utilizà tecniche di ricuperazione di memoria per ottimisà u cunsumu di RAM. Altrimenti, i sistemi operativi VM crash with RAM access errors.

Chì tecniche per aduprà ESXi decide secondu a carica di RAM:

Statu di memoria

Border

Actions

High

400% di minFree

Dopu avè righjuntu u limitu superiore, e grandi pagine di memoria sò sparte in picculi (TPS travaglia in modu standard).

U Populu Và

100% di minFree

Grandi pagine di memoria sò sparte in picculi, TPS hè obligatu à travaglià.

Cantora

64% di minFree

TPS + Ballon

Hard

32% di minFree

TPS + Compress + Swap

Low

16% di minFree

Cumpress + Swap + Block

Source

minFree hè a RAM necessaria per l'ipervisore per travaglià.

Prima di ESXi 4.1 inclusive, minFree hè stata fissata per difettu - 6% di a RAM di u servitore (u percentuale puderia esse cambiatu via l'opzione Mem.MinFreePct in ESXi). In e versioni più tardi, per via di l'aumentu di e dimensioni di memoria nantu à i servitori, minFree hà cuminciatu à esse calculatu nantu à a quantità di memoria di l'ospiti, è micca cum'è un percentinu fissu.

U valore minFree (predeterminatu) hè calculatu cum'è seguente:

Percentuale di memoria riservata per minFree

Gamma di memoria

6%

0-4 GB

4%

4-12 GB

2%

12-28 GB

1%

Memoria restante

Source

Per esempiu, per un servitore cù 128 GB di RAM, u valore MinFree seria:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
U valore attuale pò differisce da un paru di centu MB, dipende da u servitore è RAM.

Percentuale di memoria riservata per minFree

Gamma di memoria

Valore per 128 GB

6%

0-4 GB

245,76 Mo

4%

4-12 GB

327,68 Mo

2%

12-28 GB

327,68 Mo

1%

Memoria restante (100 GB)

1024 Mo

Di solitu, per stands pruduttivi, solu u Statu High pò esse cunsideratu normale. Per i banchi di prova è di sviluppu, i stati Clear / Soft ponu esse accettabili. Se a RAM nantu à l'ospitu hè menu di 64% MinFree, allora i VM in esecuzione anu definitivamente prublemi di rendiment.

In ogni statu, certe tecniche di ricuperazione di memoria sò applicate, cuminciendu cù TPS, chì praticamenti ùn affetta micca u rendiment di a VM, è finisce cù Swapping. Vi dicu più nantu à elli.

Trasparenza di a Pagina (TPS). TPS hè, in generale, a deduplicazione di e pagine di memoria di a macchina virtuale in un servitore.

ESXi cerca pagine identiche di a RAM di a macchina virtuale cuntendu è paragunendu a somma hash di e pagine, è sguassate e pagine duplicate, rimpiazzendu cù ligami à a stessa pagina in a memoria fisica di u servitore. In cunsiquenza, u cunsumu di memoria fisica hè ridutta è una certa soprascrizzione di memoria pò esse ottenuta cù pocu o nimu degradazione di rendiment.

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria
Source

Stu mekanismu funziona solu per e pagine di memoria di 4 KB (pagine chjuche). L'hypervisor ùn prova ancu di dedupe pagine di 2 MB (pagine grandi): a chance di truvà pagine identiche di questa dimensione ùn hè micca grande.

Per automaticamente, ESXi allocate memoria à pagine grandi. A rottura di grandi pagine in pagine chjuche principia quandu u limitu di u Statu High hè righjuntu è hè furzatu quandu u Statu Clear hè righjuntu (vede a tabella di u statu di l'ipervisore).

Se vulete chì TPS cumencia à travaglià senza aspittà chì a RAM di l'ospite si riempia, in Opzioni Avanzate ESXi avete bisognu di stabilisce u valore. "Mem.AllocGuestLargePage" à 0 (default 1). Allora l'attribuzione di pagine di memoria grande per e macchine virtuali serà disattivata.

Da dicembre 2014, in tutte e versioni di ESXi, TPS trà VM hè stata disattivata per difettu, postu chì una vulnerabilità hè stata trovata chì teoricamente permette l'accessu da una VM à a RAM di un'altra VM. Dettagli quì. Ùn aghju micca scontru infurmazione nantu à l'implementazione pratica di sfruttà a vulnerabilità TPS.

A pulitica TPS cuntrullata via opzione avanzata "Mem.ShareForceSalting" nantu à ESXi:
0 - Inter-VM TPS. TPS travaglia per e pagine di diverse VM;
1 - TPS per VM cù u listessu valore "sched.mem.pshare.salt" in VMX;
2 (default) - TPS intra-VM. TPS travaglia per e pagine in a VM.

Hè sicuramente sensu di disattivà e pagine grandi è accende Inter-VM TPS in banche di prova. Pò esse ancu usatu per stands cù un gran numaru di u listessu tipu di VM. Per esempiu, nantu à stands cù VDI, u risparmiu in memoria fisica pò ghjunghje à decine di percentu.

ballooning di memoria. Ballooning ùn hè più una tecnica cusì innocu è trasparente per u sistema operatore VM cum'è TPS. Ma cù l'applicazione curretta, pudete campà è ancu travaglià cù Ballooning.

Inseme cù Vmware Tools, un driver speciale chjamatu Balloon Driver (aka vmmemctl) hè stallatu nantu à a VM. Quandu l'ipervisore cumencia à esce da a memoria fisica è entra in u statu Soft, ESXi dumanda à a VM per ricuperà a RAM inutilizata attraversu stu Driver Balloon. U cunduttore, à u turnu, travaglia à u livellu di u sistema operatore è dumanda memoria libera da ellu. L'ipervisore vede quali pagine di memoria fisica hà occupatu u Balloon Driver, piglia a memoria da a macchina virtuale è torna à l'ospite. Ùn ci hè micca prublemi cù u funziunamentu di l'OS, postu chì à u nivellu di l'OS a memoria hè occupata da u Balloon Driver. Per automaticamente, u Balloon Driver pò piglià finu à u 65% di a memoria VM.

Se VMware Tools ùn sò micca installati nantu à a VM o Ballooning hè disattivatu (ùn cunsigliu micca, ma ci sò KB:), l'ipervisore cambia immediatamente à tecniche di rimozione di memoria più strette. Conclusione: assicuratevi chì VMware Tools sò nantu à a VM.

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria
L'operazione di Balloon Driver pò esse verificata da u SO via VMware Tools.

cumpressione di memoria. Sta tecnica hè usata quandu ESXi righjunghji u statu Hard. Cum'è u nome implica, ESXi prova di riduce una pagina di 4KB di RAM in 2KB è cusì liberà un pocu spaziu in a memoria fisica di u servitore. Sta tecnica aumenta significativamente u tempu d'accessu à u cuntenutu di e pagine RAM di VM, postu chì a pagina deve esse prima micca cumpressata. Calchì volta micca tutte e pagine ponu esse cumpressu è u prucessu stessu pigghia un pocu di tempu. Dunque, sta tecnica ùn hè micca assai efficace in a pratica.

scambià di memoria. Dopu una breve fase di Cumpressione di Memoria, ESXi quasi inevitabbilmente (salvo chì i VM ùn anu andatu à altri ospiti o chjusu) cambierà à Scambià. È s'ellu ci hè assai pocu memoria (Statu Bassu), allora l'ipervisore ferma ancu l'assignazione di pagine di memoria à a VM, chì pò causà prublemi in u OS invitatu di a VM.

Eccu cumu funziona Swapping. Quandu accende una macchina virtuale, un schedariu cù l'estensione .vswp hè creatu per questu. Hè uguali in grandezza à a RAM senza riserva di a VM: hè a diffarenza trà a memoria cunfigurata è riservata. Quandu u Swapping hè in esecuzione, ESXi scarica e pagine di memoria di a macchina virtuale in stu schedariu è cumencia à travaglià cun ellu invece di a memoria fisica di u servitore. Di sicuru, tali memoria "operativa" hè parechje ordini di grandezza più lenta di quella vera, ancu s'è .vswp si trova nantu à u almacenamentu veloce.

A cuntrariu di Ballooning, quandu e pagine inutilizate sò pigliate da a VM, cù Swapping, e pagine chì sò attivamente aduprate da u SO o l'applicazioni in a VM ponu spustà à u discu. In u risultatu, u rendiment di a VM cade finu à u puntu di congelazione. A VM funziona formalmente è almenu pò esse disattivata bè da u SO. Sì avete pacienza 😉

Se i VM andonu à Scambià, questa hè una situazione anormale, chì hè megliu evitata se pussibule.

Contatori di prestazioni di memoria VM chjave

Allora avemu ghjuntu à u puntu principale. Per monitorizà u statu di memoria in a VM, ci sò i seguenti contatori:

Active - mostra a quantità di RAM (KB) chì a VM hà accessu à u periodu di misurazione precedente.

Lingua latina - u listessu cum'è Active, ma cum'è un percentinu di a RAM cunfigurata di a VM. Calculate cù a seguente formula: attiva ÷ macchina virtuale cunfigurata dimensione di memoria.
High Usage è Active, rispettivamente, ùn sò micca sempre un indicatore di prublemi di rendiment VM. Se a VM usa in modu aggressivu a memoria (almenu accede à questu), questu ùn significa micca chì ùn ci hè micca abbastanza memoria. Piuttostu, hè una occasione per vede ciò chì succede in u SO.
Ci hè un Alarme d'Usu di Memoria standard per i VM:

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

Shared - a quantità di RAM di VM deduplicata cù TPS (dentro a VM o trà VM).

Emittente - a quantità di memoria di l'ospite fisicu (KB) chì hè stata data à a VM. Include Shared.

Cunsumatu (Granted - Shared) - a quantità di memoria fisica (KB) chì a VM consuma da l'ospite. Ùn include micca Shared.

Se una parte di a memoria VM hè datu micca da a memoria fisica di l'ospitu, ma da u schedariu di swap, o a memoria hè presa da a VM attraversu u Balloon Driver, questa quantità ùn hè micca presa in contu in Granted and Consumed.
I valori elevati cuncessi è cunsumati sò perfettamente normali. U sistema upirativu pigghia pocu à pocu a memoria da l'ipervisore è ùn dà micca. À u tempu, in una VM attivamente in esecuzione, i valori di questi cuntatori avvicinanu a quantità di memoria cunfigurata, è fermanu quì.

Zeru - a quantità di VM RAM (KB), chì cuntene zeri. Tali memoria hè cunsiderata libera da l'ipervisore è pò esse datu à altre macchine virtuali. Dopu chì u SO invitatu hà scrittu qualcosa à a memoria zeroed, entra in Consumed è ùn torna micca.

Overhead riservatu - a quantità di VM RAM, (KB) riservata da l'hypervisor per l'operazione VM. Questa hè una piccula quantità, ma deve esse dispunibule nantu à l'ospite, altrimente a VM ùn principia micca.

Parrucchiera Francesca - a quantità di RAM (KB) catturata da a VM utilizendu u Balloon Driver.

Cumpressu - a quantità di RAM (KB) chì hè stata cumpressa.

Cambiati - a quantità di RAM (KB) chì, per mancanza di memoria fisica in u servitore, si trasfirìu à u discu.
U pallone è altri cuntatori di tecniche di ricuperazione di memoria sò zero.

Hè cusì chì u graficu cù i contatori di Memoria s'assumiglia per una VM chì travaglia normalmente cù 150 GB di RAM.

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

In u graficu sottu, a VM hà prublemi evidenti. Sottu u graficu, pudete vede chì per questa VM, tutte e tecniche descritte per travaglià cù RAM sò stati utilizati. Balloon per questa VM hè assai più grande di Cunsumatu. In fatti, u VM hè più mortu chè vivu.

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

ESXTOP

Cum'è cù u CPU, se vulemu valutà rapidamente a situazione nantu à l'ospitu, è ancu a so dinamica cù un intervalu di finu à 2 seconde, duvemu aduprà ESXTOP.

A schermu ESXTOP da Memoria hè chjamata cù a chjave "m" è s'assumiglia cusì (i campi B, D, H, J, K, L, O sò scelti):

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

I seguenti parametri seranu interessanti per noi:

Mem overcommit avg - u valore mediu di l'oversubscription di memoria nantu à l'ospite per 1, 5 è 15 minuti. S'ellu hè sopra à cero, allora questu hè una occasione per vede ciò chì succede, ma micca sempre un indicatore di prublemi.

In righe PMEM/MB и VMKMEM/MB - infurmazione nantu à a memoria fisica di u servitore è a memoria dispunibule per VMkernel. Da l'interessante quì pudete vede u valore di minfree (in MB), u statu di l'ospite in memoria (in u nostru casu, altu).

In fila NUMA/MB pudete vede a distribuzione di RAM da i nodi NUMA (sockets). In questu esempiu, a distribuzione hè irregulare, chì, in principiu, ùn hè micca assai bona.

Eccu statistiche generale di u servitore nantu à e tecniche di ricuperazione di memoria:

PSHARE/MB sò statistiche TPS;

SWAP/MB - Scambià statistiche di usu;

ZIP/MB - statistiche di cumpressione di pagine di memoria;

MEMCTL/MB - Statistiche d'usu di Balloon Driver.

Per i VM individuali, pudemu esse interessatu in l'infurmazioni seguenti. Aghju ammucciatu i nomi di VM per ùn cunfundà l'audienza :). Se a metrica ESXTOP hè simile à u cuntatore in vSphere, aghju datu u contatore currispundente.

MEMSZ - a quantità di memoria cunfigurata nantu à a VM (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + intaccatu.

GRANT - Concedit à MB.

TCHD - Attivu in MB.

MCTL? - se Balloon Driver hè stallatu nantu à a VM.

MCTLSZ - Ballon à MB.

MCTLGT - a quantità di RAM (MB) chì ESXi vole piglià da a VM via Balloon Driver (Memctl Target).

MCTLMAX - a quantità massima di RAM (MB) chì ESXi pò piglià da a VM attraversu u Balloon Driver.

SWCUR - a quantità attuale di RAM (MB) attribuita à a VM da u schedariu Swap.

S.W.G.T. - a quantità di RAM (MB) chì ESXi vole dà à a VM da u schedariu Swap (Swap Target).

Inoltre, attraversu ESXTOP, pudete vede infurmazione più dettagliata nantu à a topologia NUMA di a VM. Per fà questu, selezziunate i campi D, G:

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

PICCULA - Nodi NUMA nantu à quale si trova a VM. Quì pudete avvistà immediatamente una vm larga, chì ùn si mette micca in un node NUMA.

NRMEM - quanti megabyte di memoria a VM piglia da u node NUMA remoto.

NLMEM - quanti megabyte di memoria a VM piglia da u node NUMA lucale.

N% L - percentuale di memoria VM nantu à u node NUMA lucale (se menu di 80%, i prublemi di rendiment ponu accade).

Memoria nantu à l'hypervisor

Se i contatori di CPU per l'ipervisore ùn sò micca di solitu d'interessu particulari, allora a situazione hè invertita cù a memoria. L'Usu di Memoria Altu nantu à una VM ùn indica micca sempre un prublema di rendiment, ma l'Usu di Memoria Altu nantu à un ipervisore attiva tecniche di gestione di memoria è provoca prublemi di rendiment in a VM. L'allarmi di Utilizzo di Memoria di l'Host deve esse monitoratu per impedisce chì a VM entre in Swap.

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

unswap

Se una VM hè in Swap, u so rendimentu hè assai ridutta. Tracce di Ballooning è a compressione sparisce rapidamente dopu chì a RAM libera apparisce nantu à l'ospitu, ma a macchina virtuale ùn hè micca pressa per vultà da Swap à u RAM di u servitore.
Prima di ESXi 6.0, l'unicu modu affidabile è rapidu per ottene una VM da Swap era di riavvià (per esse più precisu, disattivà / accende u cuntinuu). Partendu da ESXi 6.0, ancu s'ellu ùn hè micca abbastanza ufficiale, hè apparsu un modu di travagliu è affidabile per sguassà una VM da Swap. In una di e cunferenze, aghju pussutu parlà cun unu di l'ingegneri VMware in carica di CPU Scheduler. Hà cunfirmatu chì u metudu hè abbastanza travagliu è sicuru. In a nostra sperienza, ùn ci era micca prublemi cù questu.

I cumandamenti attuali per sguassà a VM da u Swap descrittu Duncan Epping. Ùn ripeteraghju micca una descrizzione dettagliata, solu dà un esempiu di u so usu. Comu pudete vede in a screenshot, qualchì tempu dopu l'esekzione di i cumandamenti specificati, Swap sparisce nantu à a VM.

Analisi di prestazioni di VM in VMware vSphere. Parte 2: Memoria

Cunsiglii di gestione di a memoria ESXi

Infine, quì sò qualchi cunsiglii chì vi aiuteranu à evità prublemi cù u rendiment VM per via di RAM:

  • Evite l'oversubscription di memoria in clusters produttivi. Hè desirabile avè sempre ~ 20-30% di memoria libera in u cluster in modu chì DRS (è l'amministratore) anu spaziu per maneuver, è i VM ùn entranu in Swap durante a migrazione. Inoltre, ùn vi scurdate di u margine per a tolleranza di difetti. Hè sgradevule quandu, quandu un servitore falla è a VM hè riavviata cù HA, alcune di e macchine entranu ancu in Swap.
  • In infrastrutture altamente consolidate, pruvate micca di creà VM cù più di a mità di a memoria di l'ospiti. Questu dinò aiuterà DRS à distribuisce e macchine virtuali in i servitori di cluster senza alcunu prublema. Questa regula, sicuru, ùn hè micca universale :).
  • Fighjate per l'alarma d'utilizazione di a memoria di l'ospite.
  • Ùn vi scurdate di stallà VMware Tools nant'à a VM è ùn disattivate Ballooning.
  • Cunsiderate l'attivazione di TPS Inter-VM è disattivà e Pagine Grandi in VDI è ambienti di prova.
  • Se a VM hà prublemi di prestazioni, verificate per vede s'ellu usa memoria da un node NUMA remoto.
  • Scuprite u vostru VM da Swap u più prestu pussibule! Frà altre cose, se a VM hè in Swap, per ragioni evidenti, u sistema di almacenamiento soffre.

Hè tuttu per mè nantu à RAM. Quì sottu hè un articulu cunnessu per quelli chì volenu scavà in i dettagli. U prossimu articulu serà dedicatu à storadzh.

E ligami utilihttp://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

Source: www.habr.com

Add a comment