2016. január 8., péntek

Hogyan győzzük meg a felhasználókat, hogy kevesebb vCPU is elég egy adott virtuális géphez?

Gondolom a fenti kérdést már más is feltette magának. Főleg olyanok, akik elég nagy számú virtuális gépet üzemeltetnek, és az igények ezer irányból érkeznek. Mindenki nagyon gyors gépet akar, és azt gondolják, hogy ezt sok-sok CPU fogja majd nekik garantálni (többek közt). Nyilván vannak esetek, amikor ez így is van, de azért a legtöbbször az igények túlzóak.

Mivel a vCenter szerveren gyűjtött performancia adatok csak igen rövid távra tárolódnak megfelelő részletességgel (bár ezen lehet változtatni, de cserébe igen nagy adatbázis kapunk), ezért hiába mutogatjuk a felhasználónak ez elmúlt egy hét vagy hónap alapján rajzolt diagramokat. Ha pl. csak két óránként van adat, akkor mondhatja hogy a látott mondjuk 30% úgy is kijöhetett, hogy voltak időszakok amikor a CPU 60-70%-on pörgött sok-sok percig, máskor meg csak 5-10%-on.

Ha rendelkezünk valamilyen komolyabb management megoldással (pl. vRealize Operation), akkor onnan könnyedén tudunk kimutatásokat készíteni a túlméretezett gépekről. De ha ilyenünk nincs, akkor kénytelen vagyunk mi megoldást találni arra, hogy meggyőzzük a felhasználót arról, hogy a kért 4-6 vCPU helyett akár kettő is elegendő lenne.

Már volt egy kétrészes bejegyzés ebben a blogban arról, hogy a vCenter szerver adatbázisát hogyan tudjuk "megcsapolni", azaz mielőtt túlzottan átlagolná az értékeket, hogyan tudjuk azt áttölteni egy másik adatbázisba. 1. rész2. rész

Az ott vázolt adatbázist kiegészítettem a virtuális gépek cpu, memória, hálózat, és diszk használatának 5 perces értékeivel, és ezeket az értékeket nagyjából negyven napig megőrzöm. A részletekbe itt nem mennék bele, a megvalósítás teljesen olyan, mint a fent említett két bejegyzésben szerepel.

Az adatokat jelenleg 40 napig őrzöm meg, így nagyjából 10-11 ezer értékem van minden egyes virtuális gépről. Ezt persze meg lehet jeleníteni a szokásos módon, mondjuk egy vonal diagramon, de ez ennyi pont esetében nem néz ki túl jól, bár a lényeg látszik róla.

Minden érték megjelenítése
De én szeretném azt is láttatni, hogy az egyes % értékek kb. hányszor fordultak elő a mért időintervallumban. Erre pedig a hisztogram kiváló lehetőség. Nem találtam az SQL Report Builderben olyan opciót, ami hisztogram szerűen ábrázolta volna az adatokat, pedig a leírásban utalnak rá. De ez nem gond, mert könnyű olyan SQL lekérdezést írni, ami ezeket az értékeket előállítja.

select count(*) as darab,round(stat_value,0) as szazalek from VIEW_VM_STAT_5MIN 
where vm=@VM and stat_name='cpu.usage' group by round(stat_value,0)

A fenti lekérdezésben a @VM az éppen kiválasztott virtuális gépet jelöli, a view_vm_stat_5min pedig azt a View-t takarja, amiben a virtuális gépek ötperces adatai vannak. A round függvény helyett lehet használni pl. a floor függvényt is, nagy eltérés nem lenne miatta.
Nézzük meg, hogy a fenti lekérdezést megjelenítve mit kapunk:

Hisztogram, lineáris 
Erre ránézve már kijelenthető, hogy a CPU használat nagyjából 2 és 20% között mozgott az elmúlt 40 napban. Viszont az ilyen megjelenítésnek lehet egy olyan hátránya, hogy ha igen nagy szórást mutatnak az értékek, akkor a nagy értékek miatt nehezen leolvashatóak a kicsik, mivel a tengely lineáris. Erre találták ki a logaritmikus ábrázolást. Nézzük, hogyan változik a fenti ábra:

Hisztogram, logaritmikus
Ez így már sokkal jobb :)

A fentiekkel azt szerettem volna megmutatni, hogy egy pici munkával ki lehet nyerni és meg lehet jeleníteni olyan adatokat is, amit a vSphere kliensben nem tudunk.

Végezetül nézzünk néhány példát különböző viselkedésű gépekre:

Itt aztán van minden, de azért a jellemző tartomány itt is 1-10%.

A következő gép étvágyát képtelenség volt kielégíteni. Szerencsére megszüntetés előtt áll :)


De nézzünk olyan gépet is, ami egész nap nem csinál semmit. Akkor meg minek tartjuk? :)

Végül egy olyan gép, aminek már régen szerettem volna csökkenteni a vCPU számát, de eddig nem volt olyan eszköz a kezemben, amivel feketén-fehéren (kéken..) megmutathattam volna, hogy amit kértek, az túlzás.

És végül Boldog Új Évet Kívánok az összes (5-10) olvasónak!!!




5 megjegyzés:

  1. Koszi a tapasztalataid Zoli. egyebkent igy visszaosztva a DB mertet 1VM adatai mennyi helyet foglalnak? sikerult meggyozni a szoban forgo vm tulajdonosat vegul?:)

    VálaszTörlés
    Válaszok
    1. Egy rekord kb. 37 byte, és van kb. 850 gép, negyven napig ötpercenként négy értékkel. Ez durván 1,5MB/gép. Ennyit megér :)

      Sajnos most más dolgok miatt a felhasználók győzködése egyelőre parkolópályán (IBM HS22-->HP Proliant BL460c Gen9 cserék pl.)

      Törlés
    2. az tenyleg nem sok.
      jolhangzik az upgrade:)

      Törlés
  2. 11. olvasó jelen :) Csak igy tovabb, tok hasznosak a dolgok amiket leirsz.

    VálaszTörlés