2013. június 6., csütörtök

CPU Ready Time (%RDY)

Ha egy virtuális gépnek CPU-hoz köthető teljesítmény problémái vannak, akkor minden ezzel foglalkozó cikk, leírás első helyen említi a CPU Ready Time értékének ellenőrzését. De mit is jelent ez?

A virtualizáció egyik sajátsága, hogy az egy hoston futó virtuális CPU-knak (vCPU) a hypervisor-ban futó scheduler osztja ki a fizikia CPU-kat (pCPU). Ha több vCPU van, mint pCPU, akkor előfordulhat, hogy az egyik virtuális gépben futó vCPU-nak lenne dolga, de mégis várakoznia kell, mivel az őket kiszolgáló pCPU-kat a scheduler éppen másik virtuális gépnek osztotta ki. A várakozással töltött időt nevezzük CPU Ready Time-nak a VMware terminológiában.

Az teljesen természetes, hogy ez az érték nagyobb mint nulla. Az is igaz, hogy kicsi értékek esetén sincs semmilyen észlelhető hatása a teljesítményre. Már csak az a kérdés, hogy mekkora érték esetén kell elkezdenünk aggódni, és keresni a megoldást a nagy érték csökkentésére. Mint általában lenni szokott, itt sem határozható meg konkrét érték. Természetesen szamárvezető van, ami azt mondja, hogy 5%/vCPU fölött már oda kell figyelni, 10%/vCPU fölött pedig már kifejezetten rossz a helyzet.

Ha meg szeretnénk határozni egy konkrét virtuális gép esetében ezt az értéket, akkor ez nem is olyan egyszerű dolog. Nézzük meg, hogy mit látunk, ha a vSphere kliensben a performancia fülön megjelenítjük egy konkrét virtuális gép CPU Ready Time értékét.

Itt bizony ezres nagyságrendű értékeket látunk. Hogy lehet ebből %-ban kifejezni, hogy mennyi a CPU Ready Time egy vCPU esetében? Pirossal bekarikáztam a fontosabb információkat. Ezek szerint a fenti diagram 20 másodpercenként frissül, összegzett értékeket tartalmaz a 20 másodperce vonatkoztatva, és ezredmásodpercben jeleníti meg. Ezek szerint a legutóbbi 20 másodpercből 3806 ezredmásodperc volt a Ready Time értéke. Ha ezt %-ban kifejezzük, akkor  
3806/(20*1000))*100=19.3 értéket kapunk. A 19.3% jóval több, mint az 5%, de még a 10%-ot is jóval meghaladja. Akkor ez a gép most rossz állapotban van? Ehhez tudnunk kell azt is, hogy ebben a virtuális gépben mennyi vCPU van, ugyanis ez a 3806 ezredmásodperc az összes vCPU Ready Time értékének összegét tartalmazza. Lehetőség van arra is, hogy a fenti értéket processzoronként is megnézzük. Látható a lenti ábrán, hogy ebben a gépben 8 virtuális CPU van.
 
 

Végezzük el a számítást egy vCPU-ra is, mondjuk arra, amelyiken ez az érték a legnagyobb.  608/(20*1000))*100=3.04, azaz megközelítőleg 3%. Ez már így sokkal jobban mutat.

A VMware adminoknak van más lehetősége is. A vMA-n keresztül futtathatjuk az resxtop utility-t, amivel mindenféle értéket ki tudunk nyerni a hostból. A lenti képen ugyanezt a virtuális gépet (is) láthatjuk.

 
Itt már egy kicsit gyorsabban juthatunk információhoz, hiszen egyből %-ban látjuk az értékeket. Viszont itt is jó nagy a Ready Time értéke, mivel alapból a nyolc processzor összegét mutatja. Viszont ha megnézzük a virtuális gép részleteit, akkor már itt is barátságosabb számokat látunk.


Adódik a kérdés, hogy mit tehetünk akkor, ha ez az érték tartósan nagy, és ez már érezhető lassulást is okoz. Ezt nem feltétlenül egyszerű megválaszolni, de van néhány lehetőség. Pl.

  • Ha kevesebb vCPU is elég, akkor csökkentsük a vCPU-k számát egy adott virtuális gépben
  • Ha van rá lehetőség, akkor csökkentsük a vCPU/pCPU arányt (mondjuk virtuális gépek áthelyezésével)
  • Nem teszteltem, de azt olvastam, hogy inkább két darab sok vCPU-t tartalmazó gépet futtassunk egy hoston, mint egy darab sok vCPU-s gépet több darab 1-2 vCPU-s géppel
  • Növeljük a fizikai processzorok számát:)

 

 

Nincsenek megjegyzések:

Megjegyzés küldése