Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Bahagian 1. Mengenai CPU

Dalam artikel ini kita akan bercakap tentang kaunter prestasi memori akses rawak (RAM) dalam vSphere.
Nampaknya dengan ingatan semuanya lebih jelas daripada pemproses: jika masalah prestasi timbul pada VM, sukar untuk tidak menyedarinya. Tetapi jika mereka muncul, adalah lebih sukar untuk menanganinya. Tetapi perkara pertama dahulu.

Sedikit teori

RAM mesin maya diambil daripada memori pelayan yang mana VM sedang berjalan. Ini agak jelas :). Jika RAM pelayan tidak mencukupi untuk semua orang, ESXi mula menggunakan teknik penambakan memori. Jika tidak, sistem pengendalian VM akan ranap dengan ralat akses RAM.

ESXi memutuskan teknik yang hendak digunakan bergantung pada beban RAM:

Status ingatan

Sempadan

Aktiviti

Tinggi

400% daripada minPercuma

Selepas mencapai had atas, halaman memori besar dibahagikan kepada halaman kecil (TPS beroperasi dalam mod standard).

Clear

100% daripada minPercuma

Halaman memori yang besar dibahagikan kepada yang kecil, TPS dipaksa.

Lembut

64% daripada minPercuma

TPS + Belon

Keras

32% daripada minPercuma

TPS + Mampat + Tukar

Rendah

16% daripada minPercuma

Mampat + Tukar + Sekat

Source

minFree ialah RAM yang diperlukan untuk hypervisor berjalan.

Sehingga ESXi 4.1 inklusif, minFree telah ditetapkan secara lalai - 6% daripada RAM pelayan (peratusan boleh ditukar melalui pilihan Mem.MinFreePct pada ESXi). Dalam versi kemudian, disebabkan oleh pertumbuhan memori pada pelayan, minFree mula dikira berdasarkan jumlah memori hos, dan bukan sebagai nilai peratusan tetap.

Nilai minFree (lalai) dikira seperti berikut:

Peratusan memori dikhaskan untuk minFree

Julat ingatan

6%

0-4 GB

4%

4-12 GB

2%

12-28 GB

1%

Memori yang tinggal

Source

Sebagai contoh, untuk pelayan dengan 128 GB RAM, nilai MinFree adalah seperti berikut:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Nilai sebenar mungkin berbeza dengan beberapa ratus MB, bergantung pada pelayan dan RAM.

Peratusan memori dikhaskan untuk minFree

Julat ingatan

Nilai untuk 128 GB

6%

0-4 GB

245,76 MB

4%

4-12 GB

327,68 MB

2%

12-28 GB

327,68 MB

1%

Baki memori (100 GB)

1024 MB

Biasanya, untuk dirian produktif, hanya keadaan Tinggi boleh dianggap normal. Untuk bangku ujian dan pembangunan, keadaan Clear/Soft mungkin boleh diterima. Jika RAM pada hos kurang daripada 64% MinFree, maka VM yang berjalan padanya pasti mengalami masalah prestasi.

Di setiap negeri, teknik penambakan memori tertentu digunakan, bermula dari TPS, yang hampir tidak mempunyai kesan ke atas prestasi VM, hingga Swapping. Saya akan memberitahu anda lebih lanjut tentang mereka.

Perkongsian Halaman Telus (TPS). TPS, secara kasarnya, penyahduplikasian halaman RAM mesin maya pada pelayan.

ESXi mencari halaman RAM mesin maya yang sama dengan mengira dan membandingkan jumlah cincang halaman, dan mengalih keluar halaman pendua, menggantikannya dengan rujukan ke halaman yang sama dalam memori fizikal pelayan. Akibatnya, penggunaan memori fizikal dikurangkan dan beberapa kelebihan langganan memori boleh dicapai tanpa kesan prestasi.

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan
Source

Mekanisme ini hanya berfungsi untuk halaman memori bersaiz 4 KB (halaman kecil). Hipervisor tidak cuba menyahgandakan halaman bersaiz 2 MB (halaman besar): peluang untuk mencari halaman yang sama dengan saiz ini tidaklah besar.

Secara lalai, ESXi memperuntukkan memori kepada halaman besar. Memisahkan halaman besar kepada halaman kecil bermula apabila ambang keadaan Tinggi dicapai dan dipaksa apabila keadaan Kosong dicapai (lihat jadual keadaan hipervisor).

Jika anda mahu TPS mula berfungsi tanpa menunggu RAM hos penuh, anda perlu menetapkan nilai dalam Pilihan Lanjutan ESXi “Mem.AllocGuestLargePage” kepada 0 (lalai 1). Kemudian peruntukan halaman memori yang besar untuk mesin maya akan dilumpuhkan.

Sejak Disember 2014, dalam semua keluaran ESXi, TPS antara VM dilumpuhkan secara lalai, kerana kelemahan didapati secara teori membenarkan satu VM mengakses RAM VM yang lain. Butiran di sini. Saya tidak menemui maklumat tentang pelaksanaan praktikal mengeksploitasi kelemahan TPS.

Dasar TPS dikawal melalui pilihan lanjutan “Mem.ShareForceSalting” pada ESXi:
0 - TPS Antara VM. TPS berfungsi untuk halaman VM yang berbeza;
1 – TPS untuk VM dengan nilai "sched.mem.pshare.salt" yang sama dalam VMX;
2 (lalai) – TPS Intra-VM. TPS berfungsi untuk halaman di dalam VM.

Sudah tentu masuk akal untuk melumpuhkan halaman besar dan mendayakan TPS Inter-VM pada bangku ujian. Ini juga boleh digunakan untuk berdiri dengan sejumlah besar VM serupa. Sebagai contoh, pada dirian dengan VDI, penjimatan dalam memori fizikal boleh mencapai puluhan peratus.

Belon Memori. Belon bukan lagi teknik yang tidak berbahaya dan telus untuk sistem pengendalian VM seperti TPS. Tetapi jika digunakan dengan betul, anda boleh hidup dan juga bekerja dengan Ballooning.

Bersama-sama dengan Vmware Tools, pemacu khas yang dipanggil Balloon Driver (aka vmmemctl) dipasang pada VM. Apabila hypervisor mula kehabisan memori fizikal dan memasuki keadaan Lembut, ESXi meminta VM untuk menuntut semula RAM yang tidak digunakan melalui Pemacu Belon ini. Pemacu pula berfungsi pada tahap sistem pengendalian dan meminta memori percuma daripadanya. Hipervisor melihat halaman memori fizikal yang telah diduduki oleh Pemandu Belon, mengambil ingatan daripada mesin maya dan mengembalikannya kepada hos. Tiada masalah dengan operasi OS, kerana pada tahap OS memori diduduki oleh Pemacu Belon. Secara lalai, Pemacu Belon boleh mengambil sehingga 65% daripada memori VM.

Jika Alat VMware tidak dipasang pada VM atau Ballooning dinyahdayakan (saya tidak mengesyorkannya, tetapi ada KB:), hypervisor segera beralih kepada teknik yang lebih ketat untuk mengeluarkan ingatan. Kesimpulan: pastikan Alat VMware berada pada VM.

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan
Operasi Pemacu Belon boleh disemak dari OS melalui Alat VMware.

Pemampatan Memori. Teknik ini digunakan apabila ESXi mencapai keadaan Hard. Seperti namanya, ESXi cuba untuk memampatkan halaman 4KB RAM menjadi 2KB, dengan itu membebaskan sedikit ruang dalam memori fizikal pelayan. Teknik ini meningkatkan masa capaian kepada kandungan halaman RAM VM dengan ketara, kerana halaman tersebut mesti dinyahmampat dahulu. Kadangkala tidak semua halaman boleh dimampatkan dan proses itu sendiri mengambil sedikit masa. Oleh itu, teknik ini tidak begitu berkesan dalam amalan.

Pertukaran Memori. Selepas fasa pendek Pemampatan Memori, ESXi hampir tidak dapat dielakkan (jika VM tidak berpindah ke hos lain atau tidak dimatikan) bertukar kepada Pertukaran. Dan jika terdapat sedikit memori yang tinggal (Keadaan rendah), maka hypervisor juga berhenti memperuntukkan halaman memori kepada VM, yang boleh menyebabkan masalah dalam OS tetamu VM.

Beginilah cara Pertukaran berfungsi. Apabila anda menghidupkan mesin maya, fail dengan sambungan .vswp dicipta untuknya. Saiznya sama dengan RAM VM yang tidak disimpan: ini adalah perbezaan antara memori yang dikonfigurasikan dan disimpan. Apabila Swapping berjalan, ESXi menukar halaman memori mesin maya ke dalam fail ini dan mula bekerja dengannya dan bukannya memori fizikal pelayan. Sudah tentu, memori "RAM" sedemikian adalah beberapa urutan magnitud lebih perlahan daripada memori sebenar, walaupun jika .vswp berada pada storan pantas.

Tidak seperti Ballooning, apabila halaman yang tidak digunakan diambil daripada VM, dengan Menukar halaman yang digunakan secara aktif oleh OS atau aplikasi di dalam VM boleh dialihkan ke cakera. Akibatnya, prestasi VM jatuh ke tahap beku. VM berfungsi secara rasmi dan sekurang-kurangnya ia boleh dilumpuhkan dengan betul daripada OS. Jika anda bersabar 😉

Jika VM telah pergi ke Swap, ini adalah situasi kecemasan yang sebaiknya dielakkan jika boleh.

Kaunter prestasi memori mesin maya asas

Jadi kita sampai ke perkara utama. Untuk memantau keadaan memori VM, terdapat pembilang berikut:

aktif — menunjukkan jumlah RAM (KB) yang diakses oleh VM dalam tempoh pengukuran sebelumnya.

Penggunaan — sama seperti Aktif, tetapi sebagai peratusan RAM yang dikonfigurasikan VM. Dikira menggunakan formula berikut: saiz memori yang dikonfigurasikan mesin maya aktif ÷.
Penggunaan Tinggi dan Aktif, masing-masing, tidak selalu menjadi penunjuk masalah prestasi VM. Jika VM menggunakan memori secara agresif (sekurang-kurangnya mengaksesnya), ini tidak bermakna memori tidak mencukupi. Sebaliknya, ini adalah sebab untuk melihat apa yang berlaku dalam OS.
Terdapat Penggera standard untuk Penggunaan Memori untuk VM:

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Dikongsi — jumlah VM RAM yang dinyahduplikasi menggunakan TPS (dalam VM atau antara VM).

Diberikan — jumlah memori fizikal hos (KB) yang diperuntukkan kepada VM. Membolehkan Dikongsi.

Dikonsumsi (Diberikan - Dikongsi) - jumlah memori fizikal (KB) yang digunakan oleh VM daripada hos. Tidak termasuk Dikongsi.

Jika sebahagian daripada memori VM diberikan bukan daripada memori fizikal hos, tetapi daripada fail swap, atau memori diambil daripada VM melalui Pemacu Belon, jumlah ini tidak diambil kira dalam Diberi dan Digunakan.
Nilai yang Diberi dan Digunakan yang tinggi adalah perkara biasa. Sistem pengendalian secara beransur-ansur mengambil memori daripada hypervisor dan tidak memberikannya kembali. Dari masa ke masa, dalam VM yang sedang berjalan secara aktif, nilai pembilang ini mendekati jumlah memori yang dikonfigurasikan, dan kekal di sana.

Sifar — jumlah VM RAM (KB), yang mengandungi sifar. Memori sedemikian dianggap percuma oleh hypervisor dan boleh diberikan kepada mesin maya lain. Selepas OS tetamu telah menulis sesuatu ke memori sifar, ia masuk ke Digunakan dan tidak kembali semula.

Overhed Terpelihara — jumlah VM RAM, (KB) yang dikhaskan oleh hypervisor untuk operasi VM. Ini adalah jumlah yang kecil, tetapi ia mesti tersedia pada hos, jika tidak VM tidak akan bermula.

Belon — jumlah RAM (KB) yang dialih keluar daripada VM menggunakan Pemacu Belon.

Mampat — jumlah RAM (KB) yang dimampatkan.

Tukar — jumlah RAM (KB), yang, kerana kekurangan memori fizikal pada pelayan, dipindahkan ke cakera.
Kaunter teknik penambakan belon dan ingatan lain adalah sifar.

Beginilah rupa graf dengan pembilang Memori VM yang biasanya berfungsi dengan 150 GB RAM.

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Dalam graf di bawah, VM mempunyai masalah yang jelas. Di bawah graf anda dapat melihat bahawa untuk VM ini semua teknik yang diterangkan untuk bekerja dengan RAM telah digunakan. Belon untuk VM ini jauh lebih besar daripada Digunakan. Malah, VM lebih mati daripada hidup.

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

ESXTOP

Seperti CPU, jika kita ingin menilai dengan cepat keadaan pada hos, serta dinamiknya dengan selang sehingga 2 saat, kita harus menggunakan ESXTOP.

Skrin Memori ESXTOP dipanggil dengan kekunci "m" dan kelihatan seperti ini (medan B,D,H,J,K,L,O dipilih):

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Parameter berikut akan menarik minat kami:

Mem overcommit purata — nilai purata overlangganan memori pada hos selama 1, 5 dan 15 minit. Jika ia melebihi sifar, maka ini adalah sebab untuk melihat apa yang berlaku, tetapi tidak selalunya penunjuk masalah.

Dalam barisan PMEM/MB и VMKMEM/MB — maklumat tentang memori fizikal pelayan dan memori yang tersedia untuk VMkernel. Antara perkara yang menarik di sini anda boleh melihat nilai minfree (dalam MB), keadaan hos dalam ingatan (dalam kes kami, tinggi).

Dalam barisan NUMA/MB anda boleh melihat pengedaran RAM merentasi nod NUMA (soket). Dalam contoh ini, pengagihan adalah tidak sekata, yang pada dasarnya tidak begitu baik.

Berikut ialah statistik pelayan umum untuk teknik penambakan memori:

PSHARE/MB — ini adalah statistik TPS;

SWAP/MB — Tukar perangkaan penggunaan;

ZIP/MB — statistik pemampatan halaman memori;

MEMCTL/MB — Perangkaan penggunaan Pemandu Belon.

Untuk VM individu, kami mungkin berminat dengan maklumat berikut. Saya menyembunyikan nama-nama VM supaya tidak mengelirukan penonton :). Jika metrik ESXTOP serupa dengan kaunter dalam vSphere, saya akan menyediakan kaunter yang sepadan.

MEMSZ — jumlah memori yang dikonfigurasikan pada VM (MB).
MEMSZ = GERAN + MCTLSZ + SWCUR + tidak disentuh.

GERANAN - Diberikan dalam MB.

TCHD — Aktif dalam MBytes.

MCTL? — sama ada Pemacu Belon dipasang pada VM.

MCTLSZ — Belon kepada MB.

MCTLGT — jumlah RAM (MBytes) yang ingin dialih keluar oleh ESXi daripada VM melalui Pemacu Belon (Sasaran Memctl).

MCTLMAX — jumlah maksimum RAM (MBytes) yang boleh dikeluarkan oleh ESXi daripada VM melalui Pemacu Belon.

SWCUR — jumlah semasa RAM (MBytes) yang diperuntukkan kepada VM daripada fail Swap.

S.W.G.T. — jumlah RAM (MBytes) yang ESXi ingin berikan kepada VM daripada fail Swap (Sasaran Swap).

Anda juga boleh melihat maklumat lebih terperinci tentang topologi NUMA VM melalui ESXTOP. Untuk melakukan ini, pilih medan D, G:

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

KECIL – Nod NUMA di mana VM terletak. Di sini anda boleh segera melihat vm lebar, yang tidak sesuai pada satu nod NUMA.

NRMEM – berapa banyak megabait memori yang diambil oleh VM daripada nod NUMA jauh.

NLMEM – berapa banyak megabait memori yang VM ambil daripada nod NUMA tempatan.

N%L – peratusan memori VM pada nod NUMA tempatan (jika kurang daripada 80%, masalah prestasi mungkin timbul).

Memori pada hypervisor

Jika pembilang CPU untuk hipervisor biasanya tidak menarik minat tertentu, maka dengan ingatan keadaannya adalah sebaliknya. Penggunaan Memori Tinggi pada VM tidak selalu menunjukkan masalah prestasi, tetapi Penggunaan Memori yang tinggi pada hipervisor mencetuskan teknik pengurusan memori dan menyebabkan masalah dengan prestasi VM. Anda perlu memantau penggera Penggunaan Memori Hos dan menghalang VM daripada masuk ke Swap.

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Nyahtukar

Jika VM terperangkap dalam Swap, prestasinya sangat berkurangan. Jejak Belon dan mampatan cepat hilang selepas RAM percuma muncul pada hos, tetapi mesin maya tidak tergesa-gesa untuk kembali dari Swap ke RAM pelayan.
Sebelum ESXi 6.0, satu-satunya cara yang boleh dipercayai dan pantas untuk mengalih keluar VM daripada Swap adalah dengan but semula (lebih tepat, matikan/hidupkan bekas). Bermula dengan ESXi 6.0, walaupun tidak sepenuhnya rasmi, cara yang berkesan dan boleh dipercayai untuk mengalih keluar VM daripada Swap telah muncul. Pada salah satu persidangan, saya dapat bercakap dengan salah seorang jurutera VMware yang bertanggungjawab untuk Penjadual CPU. Beliau mengesahkan bahawa kaedah itu cukup berkesan dan selamat. Dalam pengalaman kami, tidak ada masalah dengannya sama ada.

Perintah sebenar untuk mengalih keluar VM daripada Swap diterangkan Duncan Epping. Saya tidak akan mengulangi penerangan terperinci, saya hanya akan memberikan contoh penggunaannya. Seperti yang anda lihat dalam tangkapan skrin, beberapa ketika selepas melaksanakan arahan yang ditentukan, Swap pada VM hilang.

Analisis prestasi VM dalam VMware vSphere. Bahagian 2: Ingatan

Petua untuk menguruskan RAM pada ESXi

Akhir sekali, berikut ialah beberapa petua yang akan membantu anda mengelakkan masalah dengan prestasi VM disebabkan oleh RAM:

  • Elakkan terlebih langganan RAM dalam kelompok yang produktif. Adalah dinasihatkan untuk sentiasa mempunyai ~20-30% memori percuma dalam kelompok supaya DRS (dan pentadbir) mempunyai ruang untuk bergerak dan VM tidak pergi ke Swap semasa penghijrahan. Juga, jangan lupa tentang margin untuk toleransi kesalahan. Adalah tidak menyenangkan apabila, apabila satu pelayan gagal dan VM dibut semula menggunakan HA, beberapa mesin juga pergi ke Swap.
  • Dalam infrastruktur yang sangat disatukan, cuba JANGAN mencipta VM dengan memori lebih daripada separuh memori hos. Ini sekali lagi akan membantu DRS untuk mengedarkan mesin maya ke seluruh pelayan kluster tanpa sebarang masalah. Peraturan ini, tentu saja, tidak universal :).
  • Berhati-hati dengan Penggera Penggunaan Memori Hos.
  • Jangan lupa pasang Alat VMware pada VM dan jangan matikan Belon.
  • Pertimbangkan untuk mendayakan Inter-VM TPS dan melumpuhkan Large Pages dalam VDI dan persekitaran ujian.
  • Jika VM mengalami masalah prestasi, semak sama ada ia menggunakan memori daripada nod NUMA jauh.
  • Alih keluar VM daripada Swap secepat mungkin! Antara lain, jika VM berada dalam Swap, sistem storan mengalami masalah atas sebab yang jelas.

Itu sahaja untuk saya tentang RAM. Di bawah adalah artikel berkaitan untuk mereka yang ingin mendalami. Artikel seterusnya akan didedikasikan untuk storaj.

Pautan bergunahttp://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

Sumber: www.habr.com

Tambah komen