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.
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