Handa ng CPU: Ang Silent Hypervisor Killer



Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema

Ang CPU Ready ay isang bagay na maaaring hindi mo pamilyar. Sa unang impression, maaaring ito ay parang isang magandang bagay ngunit sa kasamaang palad hindi ito. Ang CPU Ready ay naghuhugas sa mga virtual na kapaligiran nang mas matagal kaysa sa alam natin kung ano ito. Tinukoy ito ng VMware bilang 'Porsyento ng oras na handa na ang virtual machine, ngunit hindi maiiskedyul na tumakbo sa pisikal na CPU. Ang Ready time ng CPU ay nakasalalay sa bilang ng mga virtual machine sa host at ang kanilang CPU load. ' Kamakailan lamang nagsimula ang Hyper-V sa pagbibigay ng counter na ito (Hyper-V Hypervisor Virtual processor CPU Maghintay ng oras bawat pagpapadala) at iba pang mga hypervisor ay maaaring hindi pa rin magbigay ng sukatang ito.



Upang maunawaan kung ano ang CPU Ready, kakailanganin nating maunawaan kung paano iiskedyul ng mga hypervisor ang mga virtual CPU (vCPU) sa mga pisikal na CPU (pCPU). Kapag ang oras ng vCPU ay kinakailangan sa isang VM, vCPU (s) na kailangang iiskedyul laban sa (mga) pCPU upang ang mga utos / proseso / thread ay maaaring tumakbo laban sa pCPU. Sa isang mainam na mundo, walang mga pagkakasalungatan sa mapagkukunan o mga bottleneck kapag kinakailangan itong mangyari. Kapag ang isang solong vCPU VM ay kailangang mag-iskedyul ng oras laban sa isang pCPU, ang isang pCPU core ay magagamit at ang CPU Ready ay napakaliit sa perpektong mundo. Mahalagang tandaan na ang CPU Ready ay palaging umiiral ngunit sa isang perpektong mundo ito ay napakaliit at hindi napansin.



Sa totoong mundo, ang isa sa mga pakinabang sa virtualisasyon ay maaari mong pusta na marami sa iyong mga VM ang hindi magpapalabas ng lahat ng kanilang mga vCPU sa parehong oras at kung ang mga ito ay napakababang paggamit ng VM maaari ka ring maghulaan kung magagawa mo i-load ang iyong pisikal na host batay sa paggamit ng CPU at paggamit ng RAM. Noong nakaraan, ang mga rekomendasyon na magkaroon ng 4 vCPU sa 1 pCPU o kahit 10: 1 na ratio depende sa workload ay nagawa. Halimbawa, maaari kang magkaroon ng isang solong quad core processor ngunit may isang 4 VM na may mga vCPU bawat isa upang mabigyan ka ng 16 vCPUs sa 4 pCPUs o 4: 1. Gayunpaman, kung ano ang nagsisimulang makita ng mga inhinyero ay ang mga kapaligiran ay napakasindak lamang at hindi nila malaman kung bakit. Ang paggamit ng RAM ay tila pagmultahin, ang paggamit ng CPU sa mga pisikal na host ay maaaring maging napakababa, mas mababa sa 20%. Ang latency ng pag-iimbak ay napakababa, subalit ang mga VM ay labis na tamad.



Ang nangyayari sa senaryong ito ay Ready na ang CPU. Mayroong isang pila na pagbuo ng vCPU na handa nang maiiskedyul ngunit walang pCPU na magagamit upang maiiskedyul laban. Ititigil ng hypervisor ang pag-iiskedyul at magiging sanhi ng latency para sa panauhing VM. Ito ay isang tahimik na mamamatay hanggang sa mga nagdaang taon, walang maraming mga tool upang makita. Sa isang Windows VM, aabutin magpakailanman upang mag-boot at pagkatapos ay sa wakas, kapag nag-click ka sa start menu, tatagal nang magpakita upang magpakita. Maaari mo ring i-click ito muli na iniisip na hindi nito tinanggap ang iyong unang pag-click at kapag sa wakas ay mahuli ito, makakakuha ka ng isang double click. Sa linux, ang iyong VM ay maaaring mag-boot sa read only mode o kahit na ilipat ang mga filesystem upang mabasa lamang ang mode sa ilang mga punto sa paglaon.

Kaya paano natin lalabanan ang CPU Ready? Mayroong ilang mga paraan na makakatulong. Una ay ang pagsubaybay sa mga sukatan ng CPU Ready. Sa VMware, hindi inirerekumenda na lumampas sa 10% ngunit sa personal na karanasan, nagsisimulang mapansin ng mga gumagamit ang higit sa 5-7% depende sa uri ng VM at kung ano ang tumatakbo.

Sa ibaba ay gagamit ako ng ilang mga halimbawa mula sa VMware ESXi 5.5 upang ipakita ang Ready ng CPU. Gamit ang linya ng utos, patakbuhin ang 'esxtop'. Pindutin ang 'c' para sa view ng CPU at dapat mong makita ang isang haligi na ' % RDY ”Para sa CPU Ready. Maaari mong pindutin ang capital na “ V ”Para sa VM lamang ang tingnan.



cpu-handa-1

Makikita mo rito na ang% RDY ay medyo mataas para sa isang medyo hindi nagamit na kapaligiran. Sa kasong ito, ang aking ESXi 5.5 ay nagpapatakbo ng isang pagsubok VM sa tuktok ng VMware Fusion (Mac hypervisor) kaya inaasahan na medyo nasa mataas na dulo dahil nagpapatakbo kami ng isang VM sa isang hypervisor sa tuktok ng isa pang hypervisor.

Sa vSphere client, maaari mong hilahin ang tukoy na VM at mag-click sa tab na Pagganap. Mula doon mag-click sa 'Mga Pagpipilian sa Tsart'

cpu-handa-2

Sa loob ng Mga Pagpipilian sa Tsart, piliin ang CPU, Real-time (kung mayroon kang vCenter maaari kang magkaroon ng iba pang mga pagpipilian sa tiyempo kaysa sa real-time). Mula doon sa Mga counter, piliin ang 'Handa'. Maaaring kailanganin mong pumili ng ibang counter dahil pinapayagan lamang ng view ang dalawang uri ng data sa anumang naibigay na oras.

cpu-handa-3

Mapapansin mo na ang halagang ito ay isang buod ng handa laban sa isang porsyento. Narito ang isang link sa isang artikulo ng VMware KB kung paano i-convert ang mga buod na sukatan sa isang porsyento. - https://kb.vmware.com/kb/2002181

Kapag bumibili ng hardware, maraming mga core ang makakatulong mabawasan ang epekto ng Ready ng CPU. Tumutulong din ang hyperthreading. Habang ang Hyperthreading ay hindi nagbibigay ng isang buong pangalawang core para sa bawat pangunahing core, kadalasang sapat na ito upang payagan ang pag-iskedyul ng vCPU sa pCPU at makatulong na mabawasan ang isyu. Kahit na ang mga hypervisor ay nagsisimulang lumayo mula sa vCPU patungo sa rekomendasyon ng ratio ng pCPU, karaniwang maaari kang magaling sa isang katamtamang gamit na kapaligiran na may 4: 1 at pumunta doon. Habang nagsisimula kang mag-load ng mga VM tumingin sa latency ng CPU, Handa ng CPU at pangkalahatang pakiramdam at pagganap. Kung mayroon kang ilang mabibigat na pagpindot sa VMs, baka gusto mong ihiwalay ang mga ito sa iba pang mga kumpol at gumamit ng isang mas mababang ratio at panatilihing magaan ang mga ito. Sa kabilang banda para sa mga VM kung saan ang pagganap ay hindi susi at ok para sa kanila na tumakbo tamad maaari kang higit na mag-subscribe nang mas mataas.

Ang laki ng mga VM nang naaangkop ay isa ring malaking tool upang labanan ang Ready ng CPU. Maraming mga vendor ang inirerekumenda nang maayos ang mga pagtutukoy sa kung ano ang tunay na kailangan ng VM. Ayon sa kaugalian mas maraming mga CPU at maraming mga core = mas maraming lakas. Ang problema sa isang virtual na kapaligiran ay ang hypervisor ay kailangang iiskedyul ang lahat ng mga vCPU sa mga pCPU sa halos parehong oras at ang pag-lock ng mga pCPU ay maaaring maging problema. Kung mayroon kang isang 8 vCPU VM, kailangan mong i-lock ang 8 pCPUs upang payagan silang mag-iskedyul nang sabay. Kung ang iyong vCPU VM ay gumagamit lamang ng 10% ng kabuuang vCPUs sa anumang naibigay na oras, mas mahusay kang dalhin ang bilang ng vCPU sa 2 o 4. Mas mahusay na magpatakbo ng isang VM sa 50-80% CPU na may mas kaunting vCPUs kaysa sa 10% sa marami pang vCPUs. Ang isyung ito ay bahagi dahil ang operating system CPU scheduler ay dinisenyo upang magamit ang maraming mga core hangga't maaari samantalang kung ito ay sinanay upang i-max out ang mga core bago gamitin ang higit pa, maaaring mas mababa ito sa isang isyu. Ang isang napakalaking VM ay maaaring gumanap nang maayos ngunit maaaring maging isang 'maingay na kapit-bahay' para sa iba pang mga VM kaya't karaniwang isang proseso kung saan kailangan mong dumaan sa lahat ng mga VM sa kumpol upang 'tamang sukat' ang mga ito upang makita ang ilang mga natamo sa pagganap.

Maraming beses na nasagasaan mo ang CPU Ready at mahirap na simulan ang tamang pag-laki ng mga VM o pag-upgrade sa mga processor na may mas maraming mga core. Kung ikaw ay nasa sitwasyong ito, ang pagdaragdag ng higit pang mga host sa iyong kumpol ay maaaring makatulong sa ito upang maikalat ang karga sa maraming mga host. Kung mayroon kang mga host na may higit pang mga core / processor kaysa sa iba, ang pagtaguyod ng mataas na vCPU VM sa mga mas mataas na core host na ito ay makakatulong din. Nais mong tiyakin ang iyong pisikal na host na mayroong hindi bababa sa parehong bilang ng mga core kung hindi hihigit sa VM, kung hindi man ito ay magiging mabagal / mahirap iiskedyul ang labis ng vCPU sa pCPU dahil kailangan nilang ma-lock nang halos magkasabay. .

Panghuli, maaaring suportahan ng iyong hypervisor ang mga pagpapareserba at mga limitasyon sa VM. Minsan ang mga theses ay hindi sinasadya na maitakda. Ang agresibong mga setting sa mga ito ay maaaring maging sanhi ng handa na ang CPU kung sa katunayan ang magagamit na mga mapagkukunan ay magagamit para dito. Kadalasang pinakamahusay na gumamit ng mga pagpapareserba at naglilimita nang matipid at tanging kapag ganap na kinakailangan. Para sa pinaka-bahagi, ang isang maayos na laki ng kumpol ay naaangkop na balansehin ang mga mapagkukunan at ito ay karaniwang hindi kinakailangan.

Sa buod, ang pinakamahusay na depensa laban sa CPU Ready ay alam na mayroon ito at kung paano suriin ito. Pagkatapos ay maaari mong matukoy nang sistematiko ang pinakamahusay na mga hakbang sa pagpapagaan para sa iyong kapaligiran na ibinigay sa itaas. Para sa pinaka-bahagi, ang impormasyon sa artikulong ito ay nalalapat sa buong mundo sa anumang hypervisor, kahit na ang mga screenshot at tsart ay partikular na nalalapat sa VMware.

5 minuto basahin