Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Jika Anda mengelola infrastruktur virtual berdasarkan VMware vSphere (atau tumpukan teknologi lainnya), Anda mungkin sering mendengar keluhan dari pengguna: “Mesin virtualnya lambat!” Dalam rangkaian artikel ini saya akan menganalisis metrik kinerja dan memberi tahu Anda apa dan mengapa kinerja melambat dan bagaimana memastikan kinerja tidak melambat.

Saya akan mempertimbangkan aspek kinerja mesin virtual berikut:

  • CPU,
  • RAM,
  • DISK,
  • Jaringan.

Saya akan mulai dengan CPU.

Untuk menganalisis kinerja kita memerlukan:

  • Penghitung Kinerja vCenter – penghitung kinerja, grafiknya dapat dilihat melalui Klien vSphere. Informasi tentang penghitung ini tersedia di versi klien mana pun (klien "tebal" di C#, klien web di Flex dan klien web di HTML5). Dalam artikel ini kami akan menggunakan tangkapan layar dari klien C#, hanya karena tampilannya lebih baik dalam bentuk mini :)
  • ESXTOP – utilitas yang dijalankan dari baris perintah ESXi. Dengan bantuannya, Anda bisa mendapatkan nilai penghitung kinerja secara real time atau mengunggah nilai tersebut untuk jangka waktu tertentu ke dalam file .csv untuk analisis lebih lanjut. Selanjutnya, saya akan memberi tahu Anda lebih banyak tentang alat ini dan memberikan beberapa tautan bermanfaat ke dokumentasi dan artikel tentang topik tersebut.

Sedikit teori

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Di ESXi, proses terpisah – dunia dalam terminologi VMware – bertanggung jawab atas pengoperasian setiap vCPU (inti mesin virtual). Ada juga proses layanan, tetapi dari sudut pandang analisis kinerja VM kurang menarik.

Suatu proses di ESXi dapat berada di salah satu dari empat keadaan:

  • Run – proses melakukan beberapa pekerjaan yang berguna.
  • Tunggu – proses tidak melakukan pekerjaan apapun (idle) atau sedang menunggu input/output.
  • biaya – suatu kondisi yang terjadi pada mesin virtual multi-core. Hal ini terjadi ketika penjadwal CPU hypervisor (ESXi CPU Scheduler) tidak dapat menjadwalkan eksekusi simultan dari semua inti mesin virtual yang aktif pada inti server fisik. Di dunia fisik, semua inti prosesor bekerja secara paralel, OS tamu di dalam VM mengharapkan perilaku serupa, sehingga hypervisor harus memperlambat inti VM yang memiliki kemampuan menyelesaikan siklus jamnya lebih cepat. Dalam versi modern ESXi, penjadwal CPU menggunakan mekanisme yang disebut penjadwalan bersama yang santai: hypervisor mempertimbangkan kesenjangan antara inti mesin virtual "tercepat" dan "paling lambat" (condong). Jika kesenjangan melebihi ambang batas tertentu, inti cepat memasuki keadaan costop. Jika inti VM menghabiskan banyak waktu dalam keadaan ini, hal ini dapat menyebabkan masalah kinerja.
  • Siap – proses memasuki keadaan ini ketika hypervisor tidak dapat mengalokasikan sumber daya untuk pelaksanaannya. Nilai siap yang tinggi dapat menyebabkan masalah kinerja VM.

Penghitung kinerja CPU mesin virtual dasar

Penggunaan CPU, %. Menunjukkan persentase penggunaan CPU untuk periode tertentu.

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Bagaimana cara menganalisisnya? Jika VM konsisten menggunakan CPU di 90% atau ada peak hingga 100%, maka kita mengalami masalah. Masalah dapat dinyatakan tidak hanya dalam pengoperasian aplikasi yang “lambat” di dalam VM, tetapi juga dalam tidak dapat diaksesnya VM melalui jaringan. Jika sistem pemantauan menunjukkan bahwa VM turun secara berkala, perhatikan puncak pada grafik Penggunaan CPU.

Ada Alarm standar yang menunjukkan beban CPU mesin virtual:

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Apa yang harus dilakukan? Jika Penggunaan CPU VM terus meningkat, Anda dapat mempertimbangkan untuk menambah jumlah vCPU (sayangnya, hal ini tidak selalu membantu) atau memindahkan VM ke server dengan prosesor yang lebih bertenaga.

Penggunaan CPU dalam MHz

Dalam grafik di vCenter Usage dalam % Anda hanya dapat melihat untuk seluruh mesin virtual; tidak ada grafik untuk masing-masing inti (di Esxtop ada nilai % untuk inti). Untuk setiap inti Anda dapat melihat Penggunaan dalam MHz.

Bagaimana cara menganalisisnya? Kebetulan suatu aplikasi tidak dioptimalkan untuk arsitektur multi-core: ia hanya menggunakan satu inti 100%, dan sisanya menganggur tanpa beban. Misalnya, dengan pengaturan pencadangan default, MS SQL memulai proses hanya pada satu inti. Akibatnya, pencadangan melambat bukan karena lambatnya kecepatan disk (inilah yang awalnya dikeluhkan pengguna), tetapi karena prosesor tidak dapat mengatasinya. Masalahnya diselesaikan dengan mengubah parameter: pencadangan mulai berjalan secara paralel di beberapa file (masing-masing, dalam beberapa proses).

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU
Contoh beban yang tidak merata pada inti.

Ada juga situasi (seperti pada grafik di atas) ketika inti diberi beban tidak merata dan beberapa di antaranya memiliki puncak 100%. Seperti halnya memuat hanya satu inti, alarm untuk Penggunaan CPU tidak akan berfungsi (untuk seluruh VM), tetapi akan ada masalah kinerja.

Apa yang harus dilakukan? Jika perangkat lunak di mesin virtual memuat inti secara tidak merata (hanya menggunakan satu inti atau sebagian dari inti), tidak ada gunanya menambah jumlahnya. Dalam hal ini, lebih baik memindahkan VM ke server dengan prosesor yang lebih kuat.

Anda juga dapat mencoba memeriksa pengaturan konsumsi daya di BIOS server. Banyak administrator mengaktifkan mode Kinerja Tinggi di BIOS dan dengan demikian menonaktifkan teknologi hemat energi C-state dan P-state. Prosesor Intel modern menggunakan teknologi Turbo Boost, yang meningkatkan frekuensi masing-masing inti prosesor dibandingkan inti lainnya. Namun ini hanya berfungsi jika teknologi hemat energi diaktifkan. Jika kita menonaktifkannya, prosesor tidak dapat mengurangi konsumsi daya inti yang tidak dimuat.

VMware merekomendasikan untuk tidak menonaktifkan teknologi hemat daya di server, tetapi memilih mode yang sebisa mungkin menyerahkan manajemen daya ke hypervisor. Dalam hal ini, dalam pengaturan konsumsi daya hypervisor, Anda harus memilih Kinerja Tinggi.

Jika Anda memiliki VM individual (atau inti VM) di infrastruktur Anda yang memerlukan peningkatan frekuensi CPU, menyesuaikan konsumsi daya dengan benar dapat meningkatkan performanya secara signifikan.

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

CPU Siap

Jika inti VM (vCPU) berada dalam status Siap, maka VM tersebut tidak akan melakukan pekerjaan yang berguna. Kondisi ini terjadi ketika hypervisor tidak menemukan inti fisik bebas dimana proses vCPU mesin virtual dapat ditetapkan.

Bagaimana cara menganalisisnya? Biasanya, jika inti mesin virtual berada dalam status Siap lebih dari 10%, Anda akan melihat masalah kinerja. Sederhananya, lebih dari 10% waktu VM menunggu sumber daya fisik tersedia.

Di vCenter Anda dapat melihat 2 penghitung yang terkait dengan CPU Ready:

  • kesiapan,
  • Siap.

Nilai dari kedua penghitung dapat dilihat untuk seluruh VM dan untuk masing-masing inti.
Kesiapan menunjukkan nilai segera sebagai persentase, tetapi hanya secara Real-time (data selama satu jam terakhir, interval pengukuran 20 detik). Lebih baik menggunakan penghitung ini hanya untuk mencari masalah yang “panas”.

Nilai tandingan yang siap pakai juga dapat dilihat dari sudut pandang sejarah. Hal ini berguna untuk menetapkan pola dan menganalisis masalah secara lebih mendalam. Misalnya, jika mesin virtual mulai mengalami masalah kinerja pada waktu tertentu, Anda dapat membandingkan interval nilai CPU Ready dengan total beban di server tempat VM ini berjalan, dan mengambil tindakan untuk mengurangi beban (jika DRS gagal).

Siap, tidak seperti Kesiapan, tidak ditampilkan dalam persentase, tetapi dalam milidetik. Ini adalah penghitung tipe Penjumlahan, yang menunjukkan berapa lama selama periode pengukuran inti VM berada dalam status Siap. Anda dapat mengonversi nilai ini menjadi persentase menggunakan rumus sederhana:

(Nilai penjumlahan siap CPU / (interval pembaruan default bagan dalam hitungan detik * 1000)) * 100 = CPU siap %

Misalnya, untuk VM pada grafik di bawah, nilai puncak Ready untuk seluruh mesin virtual adalah sebagai berikut:

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Saat menghitung persentase Siap, Anda harus memperhatikan dua poin:

  • Nilai Ready untuk seluruh VM adalah jumlah Ready di seluruh core.
  • Interval pengukuran. Untuk Real-time adalah 20 detik, dan, misalnya, pada grafik harian adalah 300 detik.

Dengan pemecahan masalah yang aktif, poin-poin sederhana ini dapat dengan mudah terlewatkan dan waktu yang berharga dapat terbuang sia-sia untuk menyelesaikan masalah yang sebenarnya tidak ada.

Mari kita hitung Siap berdasarkan data dari grafik di bawah ini. (324474/(20*1000))*100 = 1622% untuk keseluruhan VM. Jika Anda melihat intinya, itu tidak terlalu menakutkan: 1622/64 = 25% per inti. Dalam hal ini, tangkapannya cukup mudah dikenali: nilai Ready tidak realistis. Namun jika kita berbicara tentang 10-20% untuk seluruh VM dengan beberapa inti, maka untuk setiap inti nilainya mungkin berada dalam kisaran normal.

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Apa yang harus dilakukan? Nilai Siap yang tinggi menunjukkan bahwa server tidak memiliki sumber daya prosesor yang cukup untuk pengoperasian normal mesin virtual. Dalam situasi seperti ini, yang tersisa hanyalah mengurangi kelebihan permintaan oleh prosesor (vCPU:pCPU). Tentu saja, hal ini dapat dicapai dengan mengurangi parameter VM yang ada atau dengan memigrasikan sebagian VM ke server lain.

Berhenti bersama

Bagaimana cara menganalisisnya? Penghitung ini juga bertipe Penjumlahan dan diubah menjadi persentase dengan cara yang sama seperti Siap:

(Nilai penjumlahan co-stop CPU / (interval pembaruan default grafik dalam hitungan detik * 1000)) * 100 = CPU co-stop %

Di sini Anda juga perlu memperhatikan jumlah core pada VM dan interval pengukurannya.
Dalam keadaan costop, kernel tidak melakukan pekerjaan yang berguna. Dengan pemilihan ukuran VM yang benar dan beban normal di server, penghitung co-stop harus mendekati nol.

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU
Dalam hal ini, bebannya jelas tidak normal :)

Apa yang harus dilakukan? Jika beberapa VM dengan jumlah inti yang besar berjalan pada satu hypervisor dan terjadi kelebihan permintaan pada CPU, maka penghitung co-stop dapat meningkat, yang akan menyebabkan masalah pada kinerja VM tersebut.

Selain itu, co-stop akan meningkat jika inti aktif dari satu VM menggunakan thread pada satu inti server fisik dengan hyper-treading diaktifkan. Situasi ini mungkin timbul, misalnya, jika VM memiliki lebih banyak inti daripada yang tersedia secara fisik di server tempat VM dijalankan, atau jika pengaturan “preferHT” diaktifkan untuk VM. Anda dapat membaca tentang pengaturan ini di sini.

Untuk menghindari masalah pada kinerja VM karena co-stop yang tinggi, pilih ukuran VM sesuai dengan rekomendasi produsen perangkat lunak yang berjalan pada VM ini dan kemampuan server fisik tempat VM dijalankan.

Jangan menambahkan inti sebagai cadangan; ini dapat menyebabkan masalah kinerja tidak hanya untuk VM itu sendiri, tetapi juga untuk tetangganya di server.

Metrik CPU berguna lainnya

Run – berapa lama waktu (ms) selama periode pengukuran vCPU berada dalam status RUN, yaitu, vCPU benar-benar melakukan pekerjaan yang berguna.

Siaga – berapa lama (ms) selama periode pengukuran vCPU dalam keadaan tidak aktif. Nilai Idle yang tinggi tidak menjadi masalah, vCPU hanya “tidak ada hubungannya”.

Tunggu – berapa lama (ms) selama periode pengukuran vCPU berada dalam status Tunggu. Karena IDLE disertakan dalam counter ini, nilai Wait yang tinggi juga tidak menunjukkan adanya masalah. Namun jika Wait IDLE rendah ketika Wait tinggi, berarti VM sedang menunggu operasi I/O selesai, dan hal ini, pada gilirannya, dapat mengindikasikan adanya masalah pada kinerja hard drive atau perangkat virtual VM.

Maks terbatas – berapa lama (ms) selama periode pengukuran vCPU berada dalam status Siap karena batas sumber daya yang ditetapkan. Jika performa sangat rendah, ada gunanya memeriksa nilai penghitung ini dan batas CPU di pengaturan VM. VM mungkin memang memiliki batasan yang tidak Anda sadari. Misalnya, hal ini terjadi ketika VM diklon dari templat yang batas CPU-nya telah ditetapkan.

Tukar tunggu – berapa lama selama periode pengukuran vCPU menunggu operasi dengan VMkernel Swap. Jika nilai penghitung ini di atas nol, maka VM pasti mengalami masalah kinerja. Kami akan berbicara lebih banyak tentang SWAP di artikel tentang penghitung RAM.

ESXTOP

Jika penghitung kinerja di vCenter bagus untuk menganalisis data historis, maka analisis operasional masalah lebih baik dilakukan di ESXTOP. Di sini semua nilai disajikan dalam bentuk jadi (tidak perlu menerjemahkan apa pun), dan periode pengukuran minimum adalah 2 detik.
Layar ESXTOP untuk CPU dipanggil dengan tombol "c" dan terlihat seperti ini:

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Untuk kenyamanan, Anda hanya dapat meninggalkan proses mesin virtual dengan menekan Shift-V.
Untuk melihat metrik masing-masing inti VM, tekan “e” dan masukkan GID VM yang diinginkan (30919 pada tangkapan layar di bawah):

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Izinkan saya membahas secara singkat kolom yang disajikan secara default. Kolom tambahan dapat ditambahkan dengan menekan "f".

NWLD (Jumlah Dunia) – jumlah proses dalam grup. Untuk memperluas grup dan melihat metrik untuk setiap proses (misalnya, untuk setiap inti dalam VM multi-inti), tekan “e”. Jika terdapat lebih dari satu proses dalam satu grup, maka nilai metrik untuk grup tersebut sama dengan jumlah metrik untuk masing-masing proses.

%DIGUNAKAN – berapa banyak siklus CPU server yang digunakan oleh suatu proses atau sekelompok proses.

%BERLARI – berapa lama selama periode pengukuran proses berada dalam status RUN, mis. melakukan pekerjaan yang bermanfaat. Berbeda dengan %USED karena tidak memperhitungkan hyper-threading, penskalaan frekuensi, dan waktu yang dihabiskan untuk tugas sistem (%SYS).

%SYS – waktu yang dihabiskan untuk tugas-tugas sistem, misalnya: pemrosesan interupsi, I/O, operasi jaringan, dll. Nilainya bisa tinggi jika VM memiliki I/O yang besar.

%OVRLP – berapa banyak waktu yang dihabiskan inti fisik tempat proses VM berjalan untuk tugas-tugas proses lainnya.

Metrik ini berhubungan satu sama lain sebagai berikut:

%DIGUNAKAN = %JALANKAN + %SYS - %OVRLP.

Biasanya metrik %USED lebih informatif.

%TUNGGU – berapa lama selama periode pengukuran proses berada dalam status Tunggu. Mengaktifkan IDLE.

%MENGANGGUR – berapa lama selama periode pengukuran proses berada dalam keadaan IDLE.

%SWPWT – berapa lama selama periode pengukuran vCPU menunggu operasi dengan VMkernel Swap.

%VMTunggu – berapa lama selama periode pengukuran vCPU berada dalam status menunggu suatu peristiwa (biasanya I/O). Tidak ada penghitung serupa di vCenter. Nilai yang tinggi menunjukkan masalah pada I/O pada VM.

%TUNGGU = %VMWAIT + %IDLE + %SWPWT.

Jika VM tidak menggunakan VMkernel Swap, maka ketika menganalisis masalah kinerja, disarankan untuk melihat %VMWAIT, karena metrik ini tidak memperhitungkan waktu ketika VM tidak melakukan apa pun (%IDLE).

%RDY – berapa lama selama periode pengukuran proses berada dalam status Siap.

%CSTP – berapa lama selama periode pengukuran proses berada pada keadaan costop.

%MLMTD – berapa lama selama periode pengukuran vCPU berada dalam status Siap karena batas sumber daya yang ditetapkan.

%WAIT + %RDY + %CSTP + %RUN = 100% – inti VM selalu berada di salah satu dari empat status ini.

CPU pada hypervisor

vCenter juga memiliki penghitung kinerja CPU untuk hypervisor, tetapi tidak ada yang menarik - penghitung tersebut hanyalah jumlah penghitung untuk semua VM di server.
Cara paling mudah untuk melihat status CPU di server adalah di tab Ringkasan:

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Untuk server, dan juga untuk mesin virtual, ada Alarm standar:

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Ketika beban CPU server tinggi, VM yang berjalan di dalamnya mulai mengalami masalah kinerja.

Di ESXTOP, data beban CPU server disajikan di bagian atas layar. Selain beban CPU standar, yang tidak terlalu informatif bagi hypervisor, ada tiga metrik lagi:

UTIL INTI (%) – memuat inti server fisik. Penghitung ini menunjukkan berapa lama inti melakukan pekerjaan selama periode pengukuran.

UTIL PCPU (%) – jika hyper-threading diaktifkan, maka ada dua thread (PCPU) per inti fisik. Metrik ini menunjukkan berapa lama waktu yang dibutuhkan setiap thread untuk menyelesaikan pekerjaan.

PCPU DIGUNAKAN (%) – sama seperti PCPU UTIL(%), namun memperhitungkan penskalaan frekuensi (baik mengurangi frekuensi inti untuk tujuan penghematan energi, atau meningkatkan frekuensi inti karena teknologi Turbo Boost) dan hyper-threading.

PCPU_USED% = PCPU_UTIL% * frekuensi inti efektif / frekuensi inti nominal.

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU
Dalam tangkapan layar ini, untuk beberapa inti, karena Turbo Boost, nilai USED lebih besar dari 100%, karena frekuensi inti lebih tinggi dari frekuensi nominal.

Beberapa kata tentang bagaimana hyper-threading diperhitungkan. Jika proses dieksekusi 100% sepanjang waktu pada kedua thread inti fisik server, sedangkan inti beroperasi pada frekuensi nominal, maka:

  • CORE UTIL untuk inti akan menjadi 100%,
  • PCPU UTIL untuk kedua thread akan menjadi 100%,
  • PCPU YANG DIGUNAKAN untuk kedua thread akan menjadi 50%.

Jika kedua thread tidak berfungsi 100% selama periode pengukuran, maka selama periode ketika thread bekerja secara paralel, PCPU yang DIGUNAKAN untuk inti dibagi dua.

ESXTOP juga memiliki layar dengan parameter konsumsi daya CPU server. Di sini Anda dapat melihat apakah server menggunakan teknologi hemat energi: C-state dan P-state. Dipanggil dengan tombol "p":

Analisis kinerja mesin virtual di VMware vSphere. Bagian 1: CPU

Masalah Umum Kinerja CPU

Terakhir, saya akan membahas penyebab umum masalah kinerja CPU VM dan memberikan tip singkat untuk mengatasinya:

Kecepatan jam inti saja tidak cukup. Jika tidak memungkinkan untuk mengupgrade VM Anda ke core yang lebih bertenaga, Anda dapat mencoba mengubah pengaturan daya agar Turbo Boost bekerja lebih efisien.

Ukuran VM salah (terlalu banyak/sedikit inti). Jika Anda menginstal beberapa inti, akan ada beban CPU yang tinggi pada VM. Jika ada banyak, dapatkan co-stop yang tinggi.

Kelebihan permintaan CPU yang besar di server. Jika VM memiliki Ready yang tinggi, kurangi kelebihan permintaan CPU.

Topologi NUMA salah pada VM besar. Topologi NUMA yang dilihat oleh VM (vNUMA) harus cocok dengan topologi NUMA server (pNUMA). Diagnostik dan kemungkinan solusi untuk masalah ini ditulis, misalnya, dalam buku "Penyelaman Mendalam Sumber Daya Host VMware vSphere 6.5". Jika Anda tidak ingin mendalami lebih dalam dan tidak memiliki batasan lisensi pada OS yang diinstal di VM, buatlah banyak soket virtual di VM, satu inti dalam satu waktu. Anda tidak akan kehilangan banyak :)

Itu saja bagi saya tentang CPU. Mengajukan pertanyaan. Di bagian selanjutnya saya akan berbicara tentang RAM.

Berguna Linkhttp://virtual-red-dot.info/vm-cpu-counters-vsphere/
https://kb.vmware.com/kb/1017926
http://www.yellow-bricks.com/2012/07/17/why-is-wait-so-high/
https://communities.vmware.com/docs/DOC-9279
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/performance/whats-new-vsphere65-perf.pdf
https://pages.rubrik.com/host-resources-deep-dive_request.html

Sumber: www.habr.com

Tambah komentar