VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

1-qism. CPU haqida

Ushbu maqolada biz vSphere-da tasodifiy kirish xotirasi (RAM) ishlash hisoblagichlari haqida gapiramiz.
Xotirada hamma narsa protsessorga qaraganda aniqroq ko'rinadi: agar VMda ishlash muammolari paydo bo'lsa, ularni sezmaslik qiyin. Ammo agar ular paydo bo'lsa, ular bilan kurashish ancha qiyin. Lekin birinchi narsa birinchi.

Bir oz nazariya

Virtual mashinalarning operativ xotirasi VMlar ishlayotgan server xotirasidan olinadi. Bu juda aniq :). Agar serverning operativ xotirasi hamma uchun yetarli bo'lmasa, ESXi xotirani qayta tiklash usullaridan foydalanishni boshlaydi. Aks holda, VM operatsion tizimlari RAMga kirish xatolari bilan ishdan chiqadi.

ESXi RAM yukiga qarab qaysi usullardan foydalanishni hal qiladi:

Xotira holati

Frontier

Amallar

baland

400% daqiqa Bepul

Yuqori chegaraga erishgandan so'ng, katta xotira sahifalari kichiklarga bo'linadi (TPS standart rejimda ishlaydi).

aniq

100% daqiqa Bepul

Katta xotira sahifalari kichiklarga bo'linadi, TPS majburlanadi.

yumshoq

64% daqiqa Bepul

TPS + shar

qiyin

32% daqiqa Bepul

TPS + siqish + almashtirish

past

16% daqiqa Bepul

Siqish + Almashtirish + Bloklash

manba

minFree - bu gipervisorning ishlashi uchun zarur bo'lgan operativ xotira.

ESXi 4.1 inklyuziv versiyasigacha minFree sukut bo'yicha o'rnatildi - server operativ xotirasining 6% (foizni ESXi'dagi Mem.MinFreePct opsiyasi orqali o'zgartirish mumkin). Keyingi versiyalarda, serverlarda xotiraning o'sishi tufayli, minFree sobit foiz qiymati sifatida emas, balki xost xotirasi miqdori asosida hisoblana boshladi.

minFree qiymati (standart) quyidagicha hisoblanadi:

MinFree uchun ajratilgan xotira foizi

Xotira diapazoni

6%

0-4 GB

4%

4-12 GB

2%

12-28 GB

1%

Qolgan xotira

manba

Masalan, 128 GB operativ xotiraga ega server uchun MinFree qiymati quyidagicha bo'ladi:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Haqiqiy qiymat server va RAMga qarab bir necha yuz MB farq qilishi mumkin.

MinFree uchun ajratilgan xotira foizi

Xotira diapazoni

128 GB uchun qiymat

6%

0-4 GB

245,76 MB

4%

4-12 GB

327,68 MB

2%

12-28 GB

327,68 MB

1%

Qolgan xotira (100 GB)

1024 MB

Odatda, unumdor stendlar uchun faqat Oliy holatni normal deb hisoblash mumkin. Sinov va ishlab chiqish dastgohlari uchun Clear/Soft holatlar qabul qilinishi mumkin. Xostdagi operativ xotira MinFree 64% dan kam bo'lsa, unda ishlaydigan VMlar, albatta, ishlash muammolariga duch keladi.

Har bir shtatda VM ishlashiga deyarli ta'sir qilmaydigan TPS dan boshlab Swappinggacha bo'lgan xotirani qayta tiklashning ma'lum usullari qo'llaniladi. Men ular haqida ko'proq aytib beraman.

Shaffof sahifa almashish (TPS). TPS, qo'pol qilib aytganda, serverdagi virtual mashinalarning operativ xotira sahifalarini dekuplikatsiya qilishdir.

ESXi bir xil virtual mashinaning operativ xotirasi sahifalarini sahifalarning xesh yig‘indisini hisoblash va solishtirish orqali qidiradi va takroriy sahifalarni olib tashlab, ularni serverning jismoniy xotirasidagi bir xil sahifaga havolalar bilan almashtiradi. Natijada, jismoniy xotira iste'moli kamayadi va ba'zi xotira obunalariga deyarli hech qanday samaradorlik ta'sirisiz erishish mumkin.

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira
manba

Bu mexanizm faqat 4 KB hajmdagi xotira sahifalari (kichik sahifalar) uchun ishlaydi. Gipervisor hatto 2 MB hajmdagi (katta sahifalar) sahifalarni deduplikatsiya qilishga urinmaydi: bu o'lchamdagi bir xil sahifalarni topish imkoniyati unchalik katta emas.

Odatiy bo'lib, ESXi xotirani katta sahifalarga ajratadi. Katta sahifalarni kichik sahifalarga bo'lish Oliy holat chegarasiga erishilgandan so'ng boshlanadi va Clear holatiga erishilganda majburlanadi (gipervisor holati jadvaliga qarang).

Agar siz TPS-ning asosiy operativ xotira to'lishini kutmasdan ishlay boshlashini istasangiz, ESXi Kengaytirilgan parametrlarida qiymatni o'rnatishingiz kerak. “Mem.AllocGuestLargePage” 0 ga (standart 1). Keyin virtual mashinalar uchun katta xotira sahifalarini ajratish o'chiriladi.

2014-yil dekabr oyidan boshlab barcha ESXi relizlarida VMlar orasidagi TPS sukut boʻyicha oʻchirib qoʻyilgan, chunki nazariy jihatdan bir VMga boshqa VMning operativ xotirasiga kirish imkonini beruvchi zaiflik aniqlangan. Tafsilotlar bu yerda. Men TPS zaifligidan foydalanishning amaliy qo'llanilishi haqida ma'lumotga duch kelmadim.

TPS siyosati kengaytirilgan variant orqali boshqariladi “Mem.ShareForceSalting” ESXi da:
0 - VMlararo TPS. TPS turli VM sahifalari uchun ishlaydi;
1 – VMXda bir xil “sched.mem.pshare.salt” qiymatiga ega VMlar uchun TPS;
2 (standart) - Intra-VM TPS. TPS VM ichidagi sahifalar uchun ishlaydi.

Katta sahifalarni o'chirib qo'yish va sinov stollarida Inter-VM TPS-ni yoqish, albatta, mantiqiy. Bundan ko'p sonli o'xshash VMlar bo'lgan stendlar uchun ham foydalanish mumkin. Masalan, VDI stendlarida jismoniy xotirani tejash o'nlab foizga yetishi mumkin.

Xotira havosi. Balonlar endi VM operatsion tizimi uchun TPS kabi zararsiz va shaffof usul emas. Ammo to'g'ri ishlatilsa, siz Ballooning bilan yashashingiz va hatto ishlashingiz mumkin.

Vmware Tools bilan birgalikda VMda Balloon Driver (aka vmmemctl) deb nomlangan maxsus drayver o'rnatilgan. Gipervisorning jismoniy xotirasi tugasa va Yumshoq holatga o'tganda, ESXi VMdan foydalanilmagan operativ xotirani ushbu Balon drayveri orqali qaytarib olishni so'raydi. Drayv, o'z navbatida, operatsion tizim darajasida ishlaydi va undan bo'sh xotira talab qiladi. Gipervisor Balloon Driver jismoniy xotiraning qaysi sahifalarini egallaganligini ko'radi, virtual mashinadan xotirani oladi va uni xostga qaytaradi. Operatsion tizimning ishlashida hech qanday muammo yo'q, chunki OS darajasida xotira Balloon Driver tomonidan ishg'ol qilinadi. Odatiy bo'lib, Balloon Driver VM xotirasining 65% gacha egallashi mumkin.

Agar VMware Tools VMda o'rnatilmagan bo'lsa yoki Ballooning o'chirilgan bo'lsa (men buni tavsiya qilmayman, lekin mavjud KB:), gipervisor darhol xotirani olib tashlashning yanada qat'iy usullariga o'tadi. Xulosa: VMware Tools VMda ekanligiga ishonch hosil qiling.

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira
Balloon Driver ishlashini VMware Tools orqali OTdan tekshirish mumkin.

Xotirani siqish. Ushbu usul ESXi qattiq holatga kelganda qo'llaniladi. Nomidan ko'rinib turibdiki, ESXi 4KB RAM sahifasini 2KB ga siqib chiqarishga harakat qiladi va shu bilan serverning jismoniy xotirasida biroz bo'sh joy bo'shatadi. Ushbu usul VM RAM sahifalari tarkibiga kirish vaqtini sezilarli darajada oshiradi, chunki avval sahifani ochish kerak. Ba'zan barcha sahifalarni siqib bo'lmaydi va jarayonning o'zi biroz vaqt oladi. Shuning uchun bu texnika amalda unchalik samarali emas.

Xotirani almashtirish. Xotirani siqishning qisqa bosqichidan so'ng, ESXi deyarli muqarrar ravishda (agar VMlar boshqa xostlarga o'tmagan yoki o'chirilmagan bo'lsa) Swapping rejimiga o'tadi. Va agar juda oz xotira qolgan bo'lsa (past holat), u holda gipervisor xotira sahifalarini VMga ajratishni ham to'xtatadi, bu esa VM ning mehmon operatsion tizimida muammolarni keltirib chiqarishi mumkin.

Swapping shu tarzda ishlaydi. Virtual mashinani yoqsangiz, u uchun .vswp kengaytmali fayl yaratiladi. O'lchami bo'yicha u VMning zahiralanmagan operativ xotirasiga teng: bu sozlangan va zahiralangan xotira o'rtasidagi farq. Swapping ishlayotganida, ESXi virtual mashina xotirasi sahifalarini ushbu faylga almashtiradi va serverning jismoniy xotirasi o'rniga u bilan ishlashni boshlaydi. Albatta, bunday "RAM" xotirasi, .vswp tezkor xotirada bo'lsa ham, haqiqiy xotiradan bir necha marta sekinroqdir.

Ballooningdan farqli o'laroq, foydalanilmagan sahifalar VM dan olinganda, OS yoki VM ichidagi ilovalar tomonidan faol foydalaniladigan Swapping sahifalari diskka ko'chirilishi mumkin. Natijada, VMning ishlashi muzlash nuqtasiga tushadi. VM rasmiy ravishda ishlamoqda va hech bo'lmaganda uni OTdan to'g'ri o'chirib qo'yish mumkin. Sabr qilsangiz 😉

Agar VMlar Swap-ga o'tgan bo'lsa, bu favqulodda vaziyat bo'lib, iloji bo'lsa oldini olish yaxshiroqdir.

Asosiy virtual mashina xotirasi ishlash hisoblagichlari

Shunday qilib, biz asosiy narsaga keldik. VM xotira holatini kuzatish uchun quyidagi hisoblagichlar mavjud:

faol — oldingi oʻlchash davrida VM kirgan operativ xotira (KB) miqdorini koʻrsatadi.

foydalanish — Active bilan bir xil, lekin VM ning sozlangan operativ xotirasining foizi sifatida. Quyidagi formula yordamida hisoblangan: faol ÷ virtual mashina konfiguratsiya qilingan xotira hajmi.
Yuqori foydalanish va faol, mos ravishda har doim ham VM ishlash muammolarining ko'rsatkichi emas. Agar VM xotiradan agressiv foydalanayotgan bo'lsa (hech bo'lmaganda unga kirish), bu xotira etarli emasligini anglatmaydi. Aksincha, bu OTda nima sodir bo'layotganiga qarash uchun sababdir.
VMlar uchun xotiradan foydalanish uchun standart signal mavjud:

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

Birgalikda — TPS (VM ichida yoki VMlar o'rtasida) yordamida birlashtirilgan VM RAM miqdori.

Berildi — VMga ajratilgan asosiy jismoniy xotira (KB) miqdori. Umumiy funksiyani yoqadi.

Iste'mol qilingan (Taqdim etilgan - Umumiy) - VM xostdan iste'mol qiladigan jismoniy xotira miqdori (KB). Birgalikda o'z ichiga olmaydi.

Agar VM xotirasining bir qismi xostning jismoniy xotirasidan emas, balki almashtirish faylidan berilsa yoki xotira ballon drayveri orqali VM dan olinsa, bu miqdor “Granted and Consumed”da hisobga olinmaydi.
Yuqori berilgan va iste'mol qilingan qiymatlar mutlaqo normaldir. Operatsion tizim asta-sekin gipervisordan xotirani oladi va uni qaytarib bermaydi. Vaqt o'tishi bilan, faol ishlaydigan VMda ushbu hisoblagichlarning qiymatlari sozlangan xotira hajmiga yaqinlashadi va u erda qoladi.

nol — nollarni o'z ichiga olgan VM RAM (KB) miqdori. Bunday xotira gipervisor tomonidan bepul hisoblanadi va boshqa virtual mashinalarga berilishi mumkin. Mehmon OS nollangan xotiraga biror narsa yozgandan so'ng, u Consumed-ga o'tadi va orqaga qaytmaydi.

Zaxiralangan qo'shimcha xarajatlar — VM ishlashi uchun gipervisor tomonidan ajratilgan VM RAM miqdori (KB). Bu kichik miqdor, lekin u xostda mavjud bo'lishi kerak, aks holda VM ishga tushmaydi.

Balon — Balloon Driver yordamida VMdan olib tashlangan operativ xotira (KB) miqdori.

Siqilgan — siqilgan operativ xotira (KB) miqdori.

Almashtirildi — serverda jismoniy xotira yoʻqligi sababli diskka oʻtgan operativ xotira (KB) miqdori.
Balon va boshqa xotirani qayta tiklash texnikasi hisoblagichlari nolga teng.

150 GB operativ xotiraga ega normal ishlaydigan VMning xotira hisoblagichlari bilan grafik shunday ko'rinadi.

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

Quyidagi grafikda VMda aniq muammolar mavjud. Grafik ostida siz ushbu VM uchun RAM bilan ishlashning barcha tavsiflangan usullaridan foydalanilganligini ko'rishingiz mumkin. Ushbu VM uchun havo shari iste'mol qilinganidan ancha katta. Aslida, VM tirikdan ko'ra o'likroq.

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

ESXTOP

Protsessorda bo'lgani kabi, agar biz xostdagi vaziyatni va uning dinamikasini 2 soniyagacha bo'lgan vaqt oralig'ida tezda baholamoqchi bo'lsak, biz ESXTOP-dan foydalanishimiz kerak.

ESXTOP Xotira ekrani “m” tugmasi bilan chaqiriladi va shunday ko‘rinadi (B,D,H,J,K,L,O maydonlari tanlangan):

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

Quyidagi parametrlar bizni qiziqtiradi:

Mem oʻrtacha hisobni oshirdi — xostda 1, 5 va 15 daqiqa davomida xotiradan ortiqcha obunaning o‘rtacha qiymati. Agar u noldan yuqori bo'lsa, unda bu nima sodir bo'layotganiga qarash uchun sababdir, lekin har doim ham muammolarning ko'rsatkichi emas.

Qatorlarda PMEM/MB и VMKMEM/MB — serverning jismoniy xotirasi va VMkernel uchun mavjud bo'lgan xotira haqida ma'lumot. Bu erda qiziqarli narsalar orasida siz minfree qiymatini (MBda), xotiradagi xost holatini (bizning holatlarimizda yuqori) ko'rishingiz mumkin.

Mos ravishda NUMA/MB operativ xotiraning NUMA tugunlari (rozetkalari) bo'ylab taqsimlanishini ko'rishingiz mumkin. Ushbu misolda taqsimot notekis, bu printsipial jihatdan unchalik yaxshi emas.

Quyida xotirani qayta tiklash texnikasi uchun umumiy server statistikasi keltirilgan:

PSHARE/MB — bular TPS statistikasi;

SWAP/MB — Foydalanish statistikasini almashtirish;

ZIP/MB — xotira sahifalarini siqish statistikasi;

MEMCTL/MB — Balon haydovchisidan foydalanish statistikasi.

Shaxsiy VMlar uchun bizni quyidagi ma'lumotlar qiziqtirishi mumkin. Tomoshabinlarni chalg'itmaslik uchun VM nomlarini yashirdim :). Agar ESXTOP ko'rsatkichi vSphere'dagi hisoblagichga o'xshash bo'lsa, men mos keladigan hisoblagichni taqdim etaman.

MEMSZ — VM da konfiguratsiya qilingan xotira miqdori (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + tegilmagan.

Grant — MBda berilgan.

TCHD — MBda faol.

MCTL? — VMda Balloon Driver o'rnatilganmi.

MCTLSZ — MB ga shar.

MCTLGT — ESXi VM dan Balloon Driver (Memctl Target) orqali olib tashlamoqchi bo'lgan operativ xotira (MBytes) miqdori.

MCTLMAX — ESXi ballon drayveri orqali VMdan olib tashlashi mumkin bo'lgan maksimal operativ xotira (MBytes).

SWCUR — Swap faylidan VMga ajratilgan joriy operativ xotira miqdori (MBytes).

S.W.G.T. — Swap faylidan (Swap Target) ESXi VMga bermoqchi boʻlgan operativ xotira (MBytes) miqdori.

ESXTOP orqali VM ning NUMA topologiyasi haqida batafsil ma'lumotni ham ko'rishingiz mumkin. Buning uchun D, ​​G maydonlarini tanlang:

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

KICHIK – VM joylashgan NUMA tugunlari. Bu erda siz darhol bitta NUMA tuguniga to'g'ri kelmaydigan keng vm ni ko'rishingiz mumkin.

NRMEM – VM masofaviy NUMA tugunidan qancha megabayt xotira oladi.

NLMEM – VM mahalliy NUMA tugunidan qancha megabayt xotira oladi.

N%L – mahalliy NUMA tugunidagi VM xotirasining ulushi (agar 80% dan kam bo'lsa, ishlash bilan bog'liq muammolar paydo bo'lishi mumkin).

Gipervisorda xotira

Agar gipervisor uchun protsessor hisoblagichlari odatda alohida qiziqish uyg'otmasa, xotirada vaziyat aksincha. VMda yuqori xotiradan foydalanish har doim ham ishlash muammosini ko'rsatmaydi, lekin gipervisorda yuqori xotiradan foydalanish xotirani boshqarish usullarini ishga tushiradi va VM ishlashi bilan bog'liq muammolarni keltirib chiqaradi. Siz Xost xotirasidan foydalanish signallarini kuzatishingiz va VM-larning Swap-ga kirishiga yo'l qo'ymasligingiz kerak.

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

Almashtirish

Agar VM almashtirishda ushlansa, uning ishlashi sezilarli darajada kamayadi. Xostda bo'sh RAM paydo bo'lgandan so'ng, havo sharlari va siqish izlari tezda yo'qoladi, ammo virtual mashina Swap-dan serverning operativ xotirasiga qaytishga shoshilmayapti.
ESXi 6.0 dan oldin VMni almashtirishdan olib tashlashning yagona ishonchli va tezkor usuli qayta ishga tushirish edi (aniqrog‘i, konteynerni o‘chirish/yoqish). ESXi 6.0 dan boshlab, garchi to'liq rasmiy bo'lmasa ham, Swap-dan VMni olib tashlashning ishlaydigan va ishonchli usuli paydo bo'ldi. Konferentsiyalardan birida men CPU Scheduler uchun mas'ul bo'lgan VMware muhandislaridan biri bilan gaplashishga muvaffaq bo'ldim. U bu usul juda samarali va xavfsiz ekanligini tasdiqladi. Bizning tajribamizga ko'ra, u bilan ham hech qanday muammo yo'q edi.

VMni almashtirishdan olib tashlash uchun haqiqiy buyruqlar tasvirlangan Dunkan Epping. Men batafsil tavsifni takrorlamayman, men undan foydalanishga misol keltiraman. Skrinshotda ko'rib turganingizdek, belgilangan buyruqni bajargandan so'ng bir muncha vaqt o'tgach, VM-ni almashtirish yo'qoladi.

VMware vSphere'da VM ishlashini tahlil qilish. 2-qism: Xotira

ESXi-da RAMni boshqarish bo'yicha maslahatlar

Va nihoyat, RAM tufayli VM ishlashi bilan bog'liq muammolarni oldini olishga yordam beradigan bir nechta maslahatlar:

  • Samarali klasterlarda RAMga ortiqcha obuna bo'lishdan saqlaning. Klasterda har doim ~20-30% bo'sh xotira bo'lishi tavsiya etiladi, shunda DRS (va administrator) manevr qilish uchun joy bo'ladi va VMlar migratsiya paytida Swap-ga o'tmaydi. Bundan tashqari, xatolarga chidamlilik chegarasi haqida unutmang. Bitta server ishlamay qolganda va VM HA yordamida qayta ishga tushirilsa, ba'zi mashinalar ham Swap-ga o'tishi yoqimsiz.
  • Yuqori darajada konsolidatsiyalangan infratuzilmalarda xost xotirasining yarmidan ko'p xotirasi bo'lgan VM-larni yaratmaslikka harakat qiling. Bu yana DRS-ga virtual mashinalarni klaster serverlarida muammosiz tarqatishga yordam beradi. Bu qoida, albatta, universal emas :).
  • Xost xotirasidan foydalanish signaliga e'tibor bering.
  • VM-ga VMware Tools-ni o'rnatishni unutmang va Ballooning-ni o'chirmang.
  • VDI va sinov muhitlarida Inter-VM TPS-ni yoqish va Katta sahifalarni o'chirishni ko'rib chiqing.
  • Agar VM ishlashda muammolarga duch kelsa, u masofaviy NUMA tugunidagi xotiradan foydalanayotganligini tekshiring.
  • VM-larni Swap-dan imkon qadar tezroq olib tashlang! Boshqa narsalar qatorida, agar VM Swap-da bo'lsa, saqlash tizimi aniq sabablarga ko'ra azoblanadi.

Bu men uchun RAM haqida. Quyida chuqurroq borishni istaganlar uchun tegishli maqolalar mavjud. Keyingi maqola storajga bag'ishlangan.

Foydali havolalarhttp://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

Manba: www.habr.com

a Izoh qo'shish