VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

Hissə 1. CPU haqqında

Bu yazıda vSphere-də təsadüfi giriş yaddaşı (RAM) performans sayğacları haqqında danışacağıq.
Görünür, yaddaşla hər şey prosessordan daha aydındır: VM-də performans problemləri yaranarsa, onları görməmək çətindir. Ancaq görünsələr, onlarla mübarizə aparmaq daha çətindir. Ancaq ilk şeylər.

Bir az nəzəriyyə

Virtual maşınların operativ yaddaşı VM-lərin işlədiyi serverin yaddaşından götürülür. Bu olduqca aydındır :). Serverin operativ yaddaşı hər kəs üçün kifayət etmirsə, ESXi yaddaşın bərpası üsullarından istifadə etməyə başlayır. Əks halda, VM əməliyyat sistemləri RAM giriş xətaları ilə qəzaya uğrayar.

ESXi RAM yükündən asılı olaraq hansı üsullardan istifadə edəcəyinə qərar verir:

Yaddaş statusu

sərhəd

Aktivlik

Yüksək

400% min Pulsuz

Yuxarı limitə çatdıqdan sonra böyük yaddaş səhifələri kiçiklərə bölünür (TPS standart rejimdə işləyir).

aydın

100% min Pulsuz

Böyük yaddaş səhifələri kiçiklərə bölünür, TPS məcbur edilir.

Yumşaq

64% min Pulsuz

TPS + Balon

Ağır

32% min Pulsuz

TPS + Sıxılma + Mübadilə

Aşağı

16% min Pulsuz

Sıxın + Dəyişdirin + Bloklayın

Mənbə

minFree hipervizorun işləməsi üçün tələb olunan RAM-dır.

ESXi 4.1 daxil olmaqla, minFree standart olaraq sabitləşdi - serverin RAM-ın 6% (faiz ESXi-də Mem.MinFreePct seçimi ilə dəyişdirilə bilər). Sonrakı versiyalarda, serverlərdə yaddaşın artması ilə əlaqədar olaraq, minFree sabit faiz dəyəri kimi deyil, hostun yaddaşının miqdarına əsasən hesablanmağa başladı.

minFree dəyəri (defolt) aşağıdakı kimi hesablanır:

MinFree üçün ayrılmış yaddaş faizi

Yaddaş diapazonu

6%

0-4 GB

4%

4-12 GB

2%

12-28 GB

1%

Qalan yaddaş

Mənbə

Məsələn, 128 GB RAM olan bir server üçün MinFree dəyəri aşağıdakı kimi olacaq:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Həqiqi dəyər serverdən və RAM-dan asılı olaraq bir neçə yüz MB fərqli ola bilər.

MinFree üçün ayrılmış yaddaş faizi

Yaddaş diapazonu

128 GB üçün dəyər

6%

0-4 GB

245,76 MB

4%

4-12 GB

327,68 MB

2%

12-28 GB

327,68 MB

1%

Qalan yaddaş (100 GB)

1024 MB

Tipik olaraq, məhsuldar stendlər üçün yalnız Yüksək vəziyyət normal hesab edilə bilər. Sınaq və inkişaf skamyaları üçün Clear/Soft states məqbul ola bilər. Əgər hostdakı RAM 64% MinFree-dən azdırsa, onda işləyən VM-lər mütləq performans problemləri ilə üzləşirlər.

Hər bir vəziyyətdə, VM performansına praktiki olaraq heç bir təsiri olmayan TPS-dən başlayaraq Swapping-ə qədər müəyyən yaddaşın bərpası üsullarından istifadə olunur. Onlar haqqında sizə daha ətraflı məlumat verəcəyəm.

Şəffaf Səhifə Paylaşımı (TPS). TPS, kobud desək, serverdəki virtual maşınların RAM səhifələrinin təkmilləşdirilməsidir.

ESXi səhifələrin hash cəmini hesablamaq və müqayisə etməklə eyni virtual maşının RAM səhifələrini axtarır və dublikat səhifələri silərək onları serverin fiziki yaddaşında eyni səhifəyə istinadlarla əvəz edir. Nəticədə, fiziki yaddaş istehlakı azalır və bəzi yaddaş həddən artıq abunəliyə praktiki olaraq heç bir performans təsiri olmadan nail olmaq olar.

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş
Mənbə

Bu mexanizm yalnız 4 KB ölçüsündə yaddaş səhifələri (kiçik səhifələr) üçün işləyir. Hipervisor hətta 2 MB ölçülü (böyük səhifələr) səhifələri təkmilləşdirməyə belə cəhd etmir: bu ölçüdə eyni səhifələri tapmaq şansı böyük deyil.

Varsayılan olaraq, ESXi yaddaşı böyük səhifələrə ayırır. Böyük səhifələrin kiçik səhifələrə bölünməsi Yüksək vəziyyət həddinə çatdıqda başlayır və Təmiz vəziyyətə çatdıqda məcbur edilir (hipervizor vəziyyəti cədvəlinə baxın).

Əgər siz TPS-nin əsas RAM-ın dolmasını gözləmədən işə başlamasını istəyirsinizsə, ESXi Advanced Options-da dəyəri təyin etməlisiniz. “Mem.AllocGuestLargePage” 0-a (standart 1). Sonra virtual maşınlar üçün böyük yaddaş səhifələrinin ayrılması dayandırılacaq.

2014-cü ilin dekabr ayından etibarən bütün ESXi buraxılışlarında VM-lər arasında TPS defolt olaraq söndürülür, çünki nəzəri cəhətdən bir VM-yə digər VM-nin RAM-a daxil olmasına imkan verən zəiflik aşkar edilmişdir. Təfərrüatlar burada. TPS zəifliyindən istifadənin praktiki tətbiqi ilə bağlı məlumata rast gəlməmişəm.

TPS siyasəti qabaqcıl seçim vasitəsilə idarə olunur “Mem.ShareForceSalting” ESXi-də:
0 - VMlərarası TPS. TPS müxtəlif VM-lərin səhifələri üçün işləyir;
1 – VMX-də eyni “sched.mem.pshare.salt” dəyəri olan VM-lər üçün TPS;
2 (standart) – Intra-VM TPS. TPS VM daxilindəki səhifələr üçün işləyir.

Böyük səhifələri söndürmək və sınaq skamyalarında Inter-VM TPS-ni aktivləşdirmək mütləq məna kəsb edir. Bu, çoxlu sayda oxşar VM-lərin olduğu stendlər üçün də istifadə edilə bilər. Məsələn, VDI ilə stendlərdə fiziki yaddaşa qənaət onlarla faizə çata bilər.

Yaddaş Balonlaması. Balonlama artıq VM əməliyyat sistemi üçün TPS kimi zərərsiz və şəffaf bir texnika deyil. Ancaq düzgün istifadə etsəniz, Ballooning ilə yaşaya və hətta işləyə bilərsiniz.

Vmware Tools ilə birlikdə VM-də Balloon Driver (aka vmmemctl) adlı xüsusi sürücü quraşdırılmışdır. Hipervizorun fiziki yaddaşı tükənməyə başlayanda və Yumşaq vəziyyətə daxil olduqda, ESXi VM-dən bu Balon Sürücüsü vasitəsilə istifadə olunmamış RAM-ı geri almağı xahiş edir. Sürücü isə öz növbəsində əməliyyat sistemi səviyyəsində işləyir və ondan boş yaddaş tələb edir. Hipervisor Balloon Driver-ın fiziki yaddaşın hansı səhifələrini tutduğunu görür, virtual maşından yaddaş götürür və onu hosta qaytarır. ƏS-nin işləməsində heç bir problem yoxdur, çünki OS səviyyəsində yaddaş Balon Sürücüsü tərəfindən tutulur. Varsayılan olaraq, Balloon Driver VM yaddaşının 65%-ni tuta bilər.

VMware Alətləri VM-də quraşdırılmayıbsa və ya Ballooning deaktivdirsə (mən bunu tövsiyə etmirəm, lakin var KB:), hipervizor dərhal yaddaşı silmək üçün daha sərt üsullara keçir. Nəticə: VMware Alətlərinin VM-də olduğundan əmin olun.

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş
Balloon Driver-ın işini VMware Tools vasitəsilə ƏS-dən yoxlamaq olar.

Yaddaşın sıxılması. Bu texnika ESXi Sərt vəziyyətə çatdıqda istifadə olunur. Adından da göründüyü kimi, ESXi 4KB RAM səhifəsini 2KB-a sıxmağa çalışır və bununla da serverin fiziki yaddaşında bir qədər yer boşaldır. Bu texnika VM RAM səhifələrinin məzmununa giriş vaxtını əhəmiyyətli dərəcədə artırır, çünki səhifə əvvəlcə açılmalıdır. Bəzən bütün səhifələri sıxışdırmaq olmur və prosesin özü bir qədər vaxt aparır. Buna görə də, bu texnika praktikada çox təsirli deyil.

Yaddaşın dəyişdirilməsi. Yaddaşın sıxılmasının qısa mərhələsindən sonra ESXi demək olar ki, qaçılmaz olaraq (əgər VM-lər digər hostlara keçməyibsə və ya söndürülməyibsə) Swapping-ə keçir. Və çox az yaddaş qalıbsa (Aşağı vəziyyət), o zaman hipervizor da yaddaş səhifələrinin VM-yə ayrılmasını dayandırır ki, bu da VM-nin qonaq ƏS-də problemlər yarada bilər.

Swapping belə işləyir. Virtual maşını işə saldığınız zaman onun üçün .vswp uzantılı fayl yaradılır. Ölçü baxımından VM-nin qorunmamış RAM-a bərabərdir: bu, konfiqurasiya edilmiş və qorunan yaddaş arasındakı fərqdir. Swapping işləyərkən ESXi virtual maşın yaddaş səhifələrini bu fayla dəyişdirir və serverin fiziki yaddaşı əvəzinə onunla işləməyə başlayır. Əlbəttə ki, belə “RAM” yaddaşı, hətta .vswp sürətli yaddaşda olsa belə, real yaddaşdan bir neçə dəfə yavaşdır.

Ballooning-dən fərqli olaraq, istifadə olunmamış səhifələr VM-dən götürüldükdə, ƏS və ya VM daxilindəki proqramlar tərəfindən aktiv şəkildə istifadə olunan Swapping səhifələri diskə köçürülə bilər. Nəticədə, VM-nin performansı donma nöqtəsinə düşür. VM formal olaraq işləyir və ən azı onu ƏS-dən düzgün şəkildə söndürmək olar. Səbirli olsanız 😉

Əgər VM-lər Swap-a keçibsə, bu, mümkün olduqda ən yaxşı şəkildə qarşısı alınan fövqəladə vəziyyətdir.

Əsas virtual maşın yaddaş performans sayğacları

Beləliklə, əsas məsələyə gəldik. VM-nin yaddaş vəziyyətini izləmək üçün aşağıdakı sayğaclar mövcuddur:

Aktiv — əvvəlki ölçmə dövründə VM-nin daxil olduğu RAM miqdarını (KB) göstərir.

Istifadə — Active ilə eynidir, lakin VM-nin konfiqurasiya edilmiş RAM-nin faizi kimi. Aşağıdakı formula ilə hesablanır: aktiv ÷ virtual maşın konfiqurasiya edilmiş yaddaş ölçüsü.
Müvafiq olaraq Yüksək İstifadə və Aktiv həmişə VM performans problemlərinin göstəricisi deyil. VM yaddaşdan aqressiv şəkildə istifadə edirsə (ən azı ona daxil olur), bu, kifayət qədər yaddaşın olmaması demək deyil. Əksinə, bu, OS-də baş verənlərə baxmaq üçün bir səbəbdir.
VM-lər üçün Yaddaş İstifadəsi üçün standart Siqnal mövcuddur:

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

Paylaşılan — TPS istifadə edərək təkrarlanan VM RAM miqdarı (VM daxilində və ya VM-lər arasında).

Verilmişdir — VM-yə ayrılmış ana fiziki yaddaşın (KB) miqdarı. Paylaşılanları aktivləşdirir.

İstehlak olunur (Verildi - Paylaşılan) - VM-nin hostdan istehlak etdiyi fiziki yaddaşın (KB) miqdarı. Paylaşılanlara daxil deyil.

Əgər VM yaddaşının bir hissəsi hostun fiziki yaddaşından deyil, dəyişdirmə faylından verilirsə və ya yaddaş Şar Sürücüsü vasitəsilə VM-dən götürülürsə, bu məbləğ “Granted and Consumed”da nəzərə alınmır.
Yüksək Verilən və İstehlak olunan dəyərlər tamamilə normaldır. Əməliyyat sistemi tədricən hipervizordan yaddaş alır və onu geri qaytarmır. Zamanla, aktiv işləyən VM-də bu sayğacların dəyərləri konfiqurasiya edilmiş yaddaşın miqdarına yaxınlaşır və orada qalır.

Sıfır — sıfırları ehtiva edən VM RAM (KB) miqdarı. Belə yaddaş hipervizor tərəfindən pulsuz sayılır və digər virtual maşınlara verilə bilər. Qonaq OS sıfırlanmış yaddaşa bir şey yazdıqdan sonra o, Consumed-ə keçir və geri qayıtmır.

Qorunan Yerüstü — VM əməliyyatı üçün hipervizor tərəfindən qorunan VM RAM miqdarı, (KB). Bu kiçik məbləğdir, lakin o, hostda əlçatan olmalıdır, əks halda VM başlamaz.

Balon — Balloon Driver istifadə edərək VM-dən çıxarılan RAM miqdarı (KB).

Sıxılır — sıxılmış RAM miqdarı (KB).

Dəyişdirilib — serverdə fiziki yaddaşın olmaması səbəbindən diskə köçən RAM miqdarı (KB).
Balon və digər yaddaşın bərpası üsullarının sayğacları sıfırdır.

150 GB RAM ilə normal işləyən VM-nin Yaddaş sayğacları ilə qrafik belə görünür.

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

Aşağıdakı qrafikdə VM-də aşkar problemlər var. Qrafikin altında görə bilərsiniz ki, bu VM üçün RAM ilə işləmək üçün təsvir olunan bütün üsullardan istifadə edilmişdir. Bu VM üçün balon istehlak ediləndən çox böyükdür. Əslində, VM diridən daha çox ölüdür.

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

ESXTOP

CPU-da olduğu kimi, hostdakı vəziyyəti, eləcə də onun dinamikasını 2 saniyəyə qədər intervalla tez qiymətləndirmək istəyiriksə, ESXTOP-dan istifadə etməliyik.

ESXTOP Yaddaş ekranı “m” düyməsi ilə çağırılır və belə görünür (B,D,H,J,K,L,O sahələri seçilib):

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

Aşağıdakı parametrlər bizim üçün maraqlı olacaq:

Mem ort — hostda 1, 5 və 15 dəqiqəlik yaddaş həddən artıq abunənin orta dəyəri. Sıfırdan yuxarıdırsa, bu, baş verənlərə baxmaq üçün bir səbəbdir, lakin həmişə problemlərin göstəricisi deyil.

Sətirlərdə PMEM/MB и VMKMEM/MB — serverin fiziki yaddaşı və VMkernel üçün mövcud olan yaddaş haqqında məlumat. Burada maraqlı şeylər arasında minfree dəyərini (MB ilə), yaddaşdakı host vəziyyətini (bizim vəziyyətimizdə yüksək) görə bilərsiniz.

Xətdə NUMA/MB RAM-ın NUMA qovşaqları (sockets) üzrə paylanmasını görə bilərsiniz. Bu nümunədə paylanma qeyri-bərabərdir, bu da prinsipcə çox yaxşı deyil.

Aşağıdakılar yaddaşın bərpası üsulları üçün ümumi server statistikasıdır:

PSHARE/MB — bunlar TPS statistikasıdır;

SWAP/MB — İstifadə statistikasının dəyişdirilməsi;

ZIP/MB — yaddaş səhifəsinin sıxılma statistikası;

MEMCTL/MB — Balloon Driver istifadə statistikası.

Fərdi VM-lər üçün bizi aşağıdakı məlumat maraqlandıra bilər. Tamaşaçıları çaşdırmamaq üçün VM-lərin adlarını gizlətdim :). ESXTOP metrikası vSphere-dəki sayğacla oxşardırsa, mən müvafiq sayğac təqdim edəcəyəm.

MEMSZ — VM-də konfiqurasiya edilmiş yaddaş miqdarı (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + toxunulmamış.

Qrant verin — MB ilə verilir.

TCHD — MB-də aktivdir.

MCTL? — VM-də Balloon Driver quraşdırılıb-quraşdırılmaması.

MCTLSZ — MB-a balon.

MCTLGT — ESXi-nin Balloon Driver (Memctl Target) vasitəsilə VM-dən silmək istədiyi RAM (MBytes) miqdarı.

MCTLMAX — ESXi-nin Balon Sürücüsü vasitəsilə VM-dən silə biləcəyi maksimum RAM miqdarı (MBytes).

SWCUR — Swap faylından VM-ə ayrılmış cari RAM miqdarı (MBytes).

S.W.G.T. — ESXi-nin Swap faylından (Swap Target) VM-ə vermək istədiyi RAM miqdarı (MBytes).

Siz həmçinin ESXTOP vasitəsilə VM-nin NUMA topologiyası haqqında daha ətraflı məlumatı görə bilərsiniz. Bunu etmək üçün D, G sahələrini seçin:

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

KİÇİK – VM-nin yerləşdiyi NUMA qovşaqları. Burada bir NUMA qovşağına sığmayan geniş vm-ni dərhal görə bilərsiniz.

NRMEM – VM uzaq NUMA qovşağından neçə meqabayt yaddaş alır.

NLMEM – VM yerli NUMA qovşağından neçə meqabayt yaddaş götürür.

N%L – yerli NUMA qovşağında VM yaddaşının faizi (80%-dən az olarsa, performans problemləri yarana bilər).

Hipervizorda yaddaş

Hipervisor üçün CPU sayğacları adətən xüsusi maraq kəsb etmirsə, yaddaşda vəziyyət əksinədir. VM-də Yüksək Yaddaş İstifadəsi həmişə performans problemini göstərmir, lakin hipervizorda yüksək Yaddaş İstifadəsi yaddaş idarəetmə üsullarını işə salır və VM performansında problemlər yaradır. Siz Host Yaddaşının İstifadəsi siqnallarına nəzarət etməli və VM-lərin Swap-a daxil olmasının qarşısını almalısınız.

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

Mübadilədən çıxarın

Əgər VM Swap-da tutularsa, onun performansı əhəmiyyətli dərəcədə azalır. Balonlama və sıxılma izləri hostda pulsuz RAM göründükdən sonra tez yox olur, lakin virtual maşın Swap-dan serverin RAM-a qayıtmağa tələsmir.
ESXi 6.0-dan əvvəl, VM-i Swap-dan çıxarmağın yeganə etibarlı və sürətli yolu yenidən yükləmək idi (daha doğrusu, konteyneri söndürmək/açmaq). ESXi 6.0-dan başlayaraq, tamamilə rəsmi olmasa da, VM-ni Swap-dan çıxarmaq üçün işləyən və etibarlı bir yol ortaya çıxdı. Konfransların birində mən CPU Scheduler-ə cavabdeh olan VMware mühəndislərindən biri ilə danışa bildim. O, metodun kifayət qədər işlək və təhlükəsiz olduğunu təsdiqləyib. Bizim təcrübəmizdə bununla bağlı heç bir problem yox idi.

VM-i Swap-dan çıxarmaq üçün faktiki əmrlər təsvir edilmişdir Duncan Epping. Ətraflı təsviri təkrarlamayacağam, sadəcə istifadəsinə dair bir nümunə verəcəyəm. Ekran görüntüsündə gördüyünüz kimi, göstərilən əmri yerinə yetirdikdən bir müddət sonra VM-də Swap yox olur.

VMware vSphere-də VM performansının təhlili. 2-ci hissə: Yaddaş

ESXi-də RAM-ı idarə etmək üçün məsləhətlər

Nəhayət, RAM səbəbiylə VM performansı ilə bağlı problemlərin qarşısını almağa kömək edəcək bir neçə ipucu:

  • Məhsuldar klasterlərdə RAM-a həddən artıq abunə olmaqdan çəkinin. DRS-in (və inzibatçının) manevr etmək üçün yeri olması və miqrasiya zamanı VM-lərin Swap-a getməməsi üçün klasterdə həmişə ~20-30% boş yaddaşın olması məsləhət görülür. Həmçinin, səhvlərə dözümlülük üçün marja haqqında unutmayın. Bir server sıradan çıxdıqda və VM HA-dan istifadə edərək yenidən işə salındıqda bəzi maşınlar Swap-a keçdikdə xoşagəlməz haldır.
  • Yüksək konsolidasiya edilmiş infrastrukturlarda host yaddaşının yarısından çox yaddaşı olan VM-lər YARATMAYIN. Bu, yenə də DRS-ə virtual maşınları klaster serverləri arasında heç bir problem olmadan paylamağa kömək edəcək. Bu qayda, əlbəttə ki, universal deyil :).
  • Host Yaddaş İstifadəsi Siqnalına diqqət yetirin.
  • VM-də VMware Tools quraşdırmağı unutmayın və Ballooning-i söndürməyin.
  • VDI və sınaq mühitlərində Inter-VM TPS-i aktivləşdirməyi və Böyük Səhifələri deaktiv etməyi nəzərdən keçirin.
  • VM-də performans problemləri varsa, onun uzaq NUMA qovşağından yaddaşdan istifadə edib-etmədiyini yoxlayın.
  • VM-ləri Mübadilədən mümkün qədər tez çıxarın! Digər şeylər arasında, əgər VM Swap-dadırsa, saxlama sistemi məlum səbəblərdən əziyyət çəkir.

RAM haqqında mənim üçün hamısı budur. Daha dərinə getmək istəyənlər üçün aşağıda əlaqəli məqalələr var. Növbəti məqalə storaja həsr olunacaq.

Faydalı linklərhttp://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

Mənbə: www.habr.com

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