Konsolidacja CPU

Jeszce ciekawiej przedstawia się konsolidacja zasobów procesorowych czyli CPU.
Potrzeby dyskowe o których było poprzednio mają tendencje do stałego wzrostu, natomiast zapotrzebowanie na CPU ma zupełnie inny charakter 😮.

System potrzebuje procesora w czasie przetwarzania 🙂.
Gdy skończy, to ten procesor jest bezczynny lub wykorzystany w niewielkim stopniu 🙂.
Czeka w gotowości aż aplikacja znowu będzie go potrzebował 😛.

Prosta zależność

W przypadku podejścia silosowego czyli na serwerze działa jeden system mamy trzy liczby opisujące zapotrzebowanie na CPU.
Nazwy są znaczące: MIN, MAX i AVG (średnie użycia procesora, a nie średnia z max i min 😀 ).
Spełniają one warunek:

AVG = \frac{1}{R} * \frac{MIN+MAX}{2}

gdzie R – jest większe od 1, a zazwyczaj jest ok 2-4, mówi ona ile razy średnie użycie jest mniejsze od średniej z max i min.
Dla systemów o dużych pikach może być nawet 10 😳.

Oznacza to, że przez większość czasu procesor jest wykorzystywany w niewielkim stopniu.
Ale zdarzają się sytuacje, że jest go potrzeba dużo, nawet cały dostępny – tzw. piki 😮.

Brak dostępnych zasobów CPU objawia się spowolnieniem działania, ale zazwyczaj po pewnym czasie następuje „rozładowanie kolejki” i serwer pracuje normalnie 🙂.
Ponieważ nikt nie lubi czekać, dlatego trzeba mieć odpowiedni zapas 😮.
To kosztuje więc trzeba przeliczyć/porównać zniecierpliwienie w czasie oczekiwania vs. dodatkowa kasa 😳.

Założenie konsolidacji CPU

Jeżeli mamy kilka systemów to szansa, że wszystkie będą miały piki użycia CPU w tym samym czasie jest bardzo mało prawdopodobna 🙂.

Dlatego, jeśli te systemy pracują na wspólnych zasobach to każdy z nich może dostać dużo zasobów CPU, wtedy gdy potrzebuje 🙂.
Jak nie są mu potrzebne to je oddaje do puli i mogą być wykorzystywane przez inne system 🙂.

Przykład

Oczywiście założenia takie same jak poprzednio siedem systemów o rożnej wielkości.

Lecz tym razem zamiast analizować wzrost zapotrzebowania na zasoby w kolejnych latach zobaczmy jak układa się zapotrzebowanie na zasoby obliczeniowe (CPU) w 96 przedziałach czasu.
BTW liczba 96 to ilość kwadransów w dobie, taka naturalna jednostka pomiarowa w monitoringu 🙂.

Suma maksymalnego zapotrzebowania na moc obliczeniową wynosi 100 jednostek.
Załóżmy dodatkowo, że dla wszystkich siedmiu systemów minimum potrzeb CPU jest 10 razy mniejsza od MAX, a AVG jest 4 razy mniejsza od MAX 🙂.
Wówczas współczynnik z wzoru powyżej wynosi 2,2 🙂.

 MAX=10 *MIN\\ AVG=2,5*MIN\\R=2,2

Otrzymujemy taki przykładowy wykres zapotrzebowania na CPU,jeżeli skonsolidujemy te siedem systemów na jednym serwerze – wspólnej mocy obliczeniowej.

Przykład konsolidacji CPU

Oczywisty wniosek

Będziemy potrzebować 50% zasobów po skonsolidowaniu w stosunku do podejścia silosowego 🙂.
Ktoś powie trochę więcej – OK, jeżeli komfort pracy w tych 2% jest wart dodatkowej kasy :mrgreen:.

Tak samo jak w poprzednio udostępniam arkusz, który wykorzystałem do wygenerowania obrazka 🙂.

Proszę pamiętać, iż jest tam wykorzystana funkcja RAND() – czyli losowania liczby z przedziału 0 do 1, dlatego każda zmiana spowoduje nowe przeliczenie czyli nowe liczby, tak samo jak F9 – oblicz arkusz 🙂.
Dlatego za każdym razem będzie trochę inny obrazek 😮.

Najprostsza zmiana to zmiana liczb w komórkach C1 i D1 – te czerwone liczby 😛.
Jest tam druga zakładka, w której można przećwiczyć inne modele rozkładu.
Nie przenoszą się one od zakładki podstawowej 🙁.
Zastosowałem proste możliwości arkuszy, aby wygenerować rozkład o zadanych parametrach MIN, MAX i AVG.

Komentarze |0|

Legenda *) Pola oznaczone gwiazdką są wymagane
**) Możesz używać tych znaczników i atrybutów HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>