Sedia CPU: The Silent Hypervisor Killer



Cuba Instrumen Kami Untuk Menghapuskan Masalah

CPU Ready adalah sesuatu yang mungkin anda tidak biasa. Pada kesan pertama, mungkin terdengar seperti perkara yang baik tetapi sayangnya tidak. CPU Ready telah menjangkiti persekitaran maya lebih lama daripada yang kita tahu. VMware mendefinisikan ini sebagai 'Peratusan masa mesin maya siap, tetapi tidak dapat dijadwalkan untuk berjalan pada CPU fizikal. Waktu Sedia CPU bergantung pada jumlah mesin maya di host dan beban CPU mereka. ' Hyper-V baru-baru ini mula menyediakan kaunter ini (Hyper-V Hypervisor Virtual processor CPU Wait time per dispatch) dan hypervisor lain mungkin masih tidak memberikan metrik ini.



Untuk memahami apa itu CPU Ready, kita perlu memahami bagaimana hypervisors menjadualkan CPU virtual (vCPU) ke CPU fizikal (pCPU). Apabila waktu vCPU diperlukan dalam VM, vCPU perlu dijadwalkan melawan pCPU sehingga perintah / proses / utas dapat berjalan melawan pCPU. Dalam dunia yang ideal, tidak ada konflik sumber atau kemacetan ketika ini perlu berlaku. Apabila VCPU tunggal VM perlu menjadualkan waktu dengan pCPU, teras pCPU tersedia dan CPU Ready sangat minimum di dunia yang ideal ini. Penting untuk diperhatikan bahawa CPU Ready selalu ada tetapi dalam dunia yang ideal sangat minimum dan tidak diperhatikan.



Di dunia nyata, salah satu faedah untuk maya ialah anda boleh bertaruh bahawa banyak VM anda tidak akan melonjak semua vCPU mereka pada masa yang sama dan jika VM penggunaannya sangat rendah, anda mungkin juga dapat meneka seberapa banyak yang anda dapat memuatkan host fizikal anda berdasarkan penggunaan CPU dan penggunaan RAM. Pada masa lalu, cadangan untuk mempunyai nisbah 4 vCPU hingga 1 pCPU atau bahkan 10: 1 bergantung pada beban kerja telah dibuat. Sebagai contoh, anda mungkin mempunyai pemproses quad core tunggal tetapi mempunyai 4 VM dengan vCPU masing-masing untuk memberi anda 16 vCPU hingga 4 pCPU atau 4: 1. Apa yang mula dilihat oleh para jurutera ialah persekitarannya sangat perlahan dan mereka tidak dapat mengetahui mengapa. Penggunaan RAM nampak baik, penggunaan CPU pada host fizikal mungkin sangat rendah, di bawah 20%. Latensi penyimpanan sangat rendah, tetapi VM sangat perlahan.



Apa yang berlaku dalam senario ini adalah CPU Ready. Terdapat barisan membina vCPU yang siap dijadualkan tetapi tidak ada pCPU yang tersedia untuk dijadualkan. Pengawas akan menghentikan penjadualan dan menyebabkan latensi untuk VM tetamu. Ia adalah pembunuh senyap sehingga hingga beberapa tahun kebelakangan ini, tidak banyak alat yang dapat dikesan. Dalam Windows VM, butuh selamanya untuk boot dan kemudian apabila akhirnya, apabila anda mengklik pada menu mula, butuh selamanya untuk muncul. Anda bahkan mungkin mengekliknya lagi kerana menganggapnya tidak menerima klik pertama anda dan apabila akhirnya berjaya, anda akan mendapat dua kali klik. Pada linux, VM anda mungkin boot ke mode baca sahaja atau bahkan menukar sistem fail ke mod baca sahaja pada suatu ketika nanti.

Jadi bagaimana kita memerangi CPU Ready? Terdapat beberapa cara yang boleh membantu. Pertama ialah memantau metrik Sedia CPU. Dalam VMware, tidak dianjurkan untuk melebihi 10% tetapi dalam pengalaman peribadi, pengguna mula melihat di atas 5-7% bergantung pada jenis VM dan apa yang sedang dijalankan.

Di bawah ini saya akan menggunakan beberapa contoh dari VMware ESXi 5.5 untuk menunjukkan CPU Ready. Dengan menggunakan baris arahan, jalankan 'esxtop'. Tekan 'c' untuk paparan CPU dan anda akan melihat lajur ' % RDY 'Untuk CPU Sedia. Anda boleh menekan modal ' V ”Untuk paparan VM Only.



cpu-siap-1

Di sini anda dapat melihat bahawa% RDY agak tinggi untuk persekitaran yang tidak digunakan. Dalam kes ini, ESXi 5.5 saya menjalankan VM ujian di atas VMware Fusion (Mac hypervisor) sehingga diharapkan sedikit tinggi kerana kami menjalankan VM pada hypervisor di atas hypervisor lain.

Pada pelanggan vSphere, anda boleh menarik VM tertentu dan klik pada tab Performance. Dari sana klik pada 'Pilihan Carta'

cpu-siap-2

Dalam Pilihan Carta, pilih CPU, Masa Nyata (jika anda mempunyai vCenter, anda mungkin mempunyai pilihan masa lain daripada masa nyata). Dari sana di Kaunter, pilih 'Siap'. Anda mungkin perlu membatalkan pilihan pembilang yang berbeza kerana pandangan hanya membenarkan dua jenis data pada satu masa tertentu.

cpu-siap-3

Anda akan perhatikan bahawa nilai ini adalah ringkasan siap berbanding peratusan. Berikut adalah pautan ke artikel VMware KB mengenai cara menukar metrik yang diringkaskan menjadi peratusan. - https://kb.vmware.com/kb/2002181

Semasa membeli perkakasan, lebih banyak teras membantu mengurangkan kesan CPU Ready. Hyperthreading juga membantu. Walaupun Hyperthreading tidak menyediakan teras kedua penuh untuk setiap teras utama, biasanya cukup untuk membenarkan penjadualan vCPU ke pCPU dan membantu mengurangkan masalah. Walaupun pengawas mula beralih dari cadangan nisbah vCPU ke pCPU, anda biasanya dapat melakukannya dengan baik pada persekitaran yang cukup sederhana dengan 4: 1 dan pergi dari sana. Semasa anda mula memuat VM, lihat latensi CPU, CPU Ready dan keseluruhan rasa dan prestasi. Sekiranya anda mempunyai VM yang memukul berat, anda mungkin ingin memisahkannya ke kelompok lain dan menggunakan nisbah yang lebih rendah dan menjadikannya ringan. Sebaliknya untuk VM di mana prestasi tidak penting dan tidak mengapa mereka berjalan perlahan anda boleh melanggan lebih tinggi.

Mengukur VM dengan tepat juga merupakan alat besar untuk memerangi CPU Ready. Banyak vendor mengesyorkan spesifikasi lebih daripada apa yang sebenarnya diperlukan oleh VM. Secara tradisinya lebih banyak CPU dan lebih banyak teras = lebih banyak kuasa. Masalah dalam persekitaran maya adalah bahawa penyelia perlu menjadualkan semua vCPU ke pCPU pada masa yang sama dan mengunci pCPU boleh menjadi masalah. Sekiranya anda mempunyai VM 8 vCPU, anda harus mengunci 8 pCPU untuk membolehkannya menjadwalkan pada masa yang sama. Sekiranya vCPU VM anda hanya menggunakan 10% daripada jumlah vCPU pada satu-satu masa, anda lebih baik menurunkan kiraan vCPU menjadi 2 atau 4. Lebih baik menjalankan VM pada CPU 50-80% dengan vCPU yang lebih sedikit daripada 10% pada lebih banyak vCPU. Masalah ini sebahagiannya kerana penjadual CPU sistem operasi dirancang untuk menggunakan inti sebanyak mungkin sedangkan jika dilatih untuk memaksimumkan inti sebelum menggunakan lebih banyak, mungkin masalahnya kurang. VM yang terlalu besar mungkin berkinerja baik tetapi mungkin 'jiran yang bising' untuk VM lain sehingga biasanya merupakan proses di mana anda harus melalui semua VM di kluster untuk 'mengukur ukuran yang tepat' untuk melihat beberapa peningkatan prestasi.

Berkali-kali anda mengalami CPU Ready dan sukar untuk memulakan ukuran VM yang betul atau menaik taraf ke pemproses dengan lebih banyak core. Sekiranya anda berada dalam situasi ini, menambahkan lebih banyak host di kluster anda dapat membantu menyebarkan beban ke lebih banyak host. Sekiranya anda mempunyai host dengan lebih banyak core / pemproses daripada yang lain, menyatukan VMPU vCPU tinggi ke host teras yang lebih tinggi ini juga dapat membantu. Anda ingin memastikan hos fizikal anda dengan sekurang-kurangnya bilangan teras yang sama jika tidak lebih daripada VM, jika tidak, akan menjadi sangat lambat / sukar untuk menjadualkan kelebihan vCPU ke pCPU kerana mereka perlu dikunci pada masa yang sama .

Akhirnya, penyelia anda mungkin menyokong tempahan dan had VM. Kadang-kadang tesis ini disusun secara tidak sengaja. Tetapan yang agresif akan menyebabkan CPU siap sedangkan sebenarnya sumber yang ada tersedia untuknya. Selalunya lebih baik menggunakan tempahan dan had dengan hemat dan hanya apabila diperlukan. Sebahagian besarnya, kelompok yang berukuran betul akan menyeimbangkan sumber dengan tepat dan ini biasanya tidak diperlukan.

Ringkasnya, pertahanan terbaik terhadap CPU Ready adalah mengetahui bahawa ia ada dan bagaimana memeriksanya. Anda kemudian dapat menentukan langkah-langkah mitigasi terbaik untuk persekitaran anda secara sistematik berdasarkan perkara di atas. Sebagian besar, maklumat dalam artikel ini berlaku secara universal untuk mana-mana hypervisor, walaupun tangkapan layar dan carta berlaku khusus untuk VMware.

5 minit membaca