Algorytm Dynamicznego Zarządzania Zasobami (SDAZ)
10 grudnia, 2024Walidacja i testy systemu DRAS (Dynamic Resource Allocation System).
18 grudnia, 2024Część II: Badanie wpływu zmian alokacji zasobów na szybkość wykonywania zadań oraz badanie możliwości oszczędności energii wynikających z tej korelacji.
Autor: Damian Lemiech, Karol Grzywacz, Radosław Kościołek
Afiliacja: Small Business System Damian Lemiech
Data wydania: 2024
Seria/numer raportu: 03/2024/DRAS
Typ: artykuł
Licencja Creative Commons: CC BY-NC 4.0
Słowa kluczowe: alokacja zasobów, dynamiczna alokacja, pobór mocy, szybkość wykonania zadania, oszczędność energii, wyniki badań
Streszczenie: Druga część publikacji wyników prac B+R przedstawia zakres badań o charakterze koncepcyjnym i wskazuje co najmniej jeden z możliwych kierunków rozwoju opracowanego Systemu Dynamicznej Alokacji Zasobów. Niewątpliwie poziom alokacji zasobów dla usług chmurowych ma wpływ na szybkość wykonywania zadań realizowanych w ramach usługi. Zasadne są pytania: jaka jest charakterystyka tej korelacji? Czy są granice skuteczności zwiększania ilości przydzielonych zasobów? Czy różne szybkości wykonywania zadań, przy różnych poziomach alokacji zasobów, kompensują się w dziedzinie poboru mody przez serwer, czy jednak możliwe jest uzyskanie oszczędności energii poprzez wybór najbardziej optymalnego ustawienia? Przedstawione wyniki badań wskazują na zależność między ilością wątków zadania i ilością przydzielonych rdzeni procesora, co ma bezpośredni wpływ na poziom obciążenia zasobów CPU badanej usługi. Zatem istnieją granice skuteczności zwiększania ilości przydzielonych zasobów, co oznacza, że badany System Dynamicznej Alokacji Zasobów może nadal ewoluować, m.in. poprzez rozbudowę algorytmów diagnostycznych, poszerzenie źródeł danych oraz zastosowanie bardziej zaawansowanych modeli uczenia maszynowego. Potwierdzeniem tego jest również bardzo obrazowe i sugestywne badanie, w którym podjęto próbę graficznego podziału na wykresie poboru mocy przez serwer. Ostateczny wniosek potwierdza możliwość uzyskania oszczędności energii poprzez przydział adekwatnej ilości zasobów dla usługi, ale również wskazuje na konieczność dopasowania ilości zasobów do typu zadania, co pozwoli zaoszczędzić pulę wolnych zasobów serwera.
Wizualizacje wyników badań i ilustracje niektórych testów (część II)
W pierwszej części publikowanych wyników prac badawczo-rozwojowych przedstawiono rezultaty czterech badań o charakterze bazowym i przekrojowym oraz mających na celu identyfikację korelacji. Niniejsza publikacja jest kontynuacją prezentacji wyników badań i obejmuje dwa kolejne badania, dlatego numeracja jest kontynuowana. Przedstawione wyniki dotyczą badań o charakterze koncepcyjno-kierunkowym. Wskazują na możliwość istnienia złożonych korelacji, które mogą być wykorzystane przez algorytmy zmiany alokacji zasobów, ale wymaga to rozszerzania zbioru danych wejściowych i zastosowania zaawansowanych algorytmów optymalizacji oraz modeli uczenia maszynowego.
Test 5:
Badanie wpływu alokacji zasobów wirtualnych maszyn na szybkość wykonywania dokładnie takiego samego zadania, w środowisku laboratoryjnym, w warunkach symulujących rzeczywiste.
Metodologia: Testy zostały wykonane na maszynie wirtualnej nr 110 z zainstalowanym systemem operacyjnym Ubuntu (Linux), przy zastosowaniu programu stress-ng. Komenda uruchamiająca procesy: stress-ng --matrix 15 --matrix-ops 2000000 --matrix-method all --matrix-size 250 --timeout 20m --metric, czyli 15 wątków i 2 miliony obliczeń na macierzach o rozmiarze 250x250, w czasie maksymalnie 20 minut.
a) Próba nr 1:
· VM nr 110,
· 16 GB pamięci RAM,
· 2 rdzenie CPU,
· 15 wątków CPU,
· zadanie CPU: 2 miliony obliczeń na macierzach o rozmiarze 250x250,
· maksymalny czas trwania: 20 min.
Komentarz: Alokacja tylko dwóch rdzeni procesora nie wystarczyła nawet do ukończenia testu w przewidzianym czasie 20 minut. Wykonało się zaledwie 57,5% zaplanowanych obliczeń.
a) Próba nr 2:
· VM nr 110,
· 16 GB pamięci RAM,
· 4 rdzenie CPU,
· 15 wątków CPU,
· zadanie CPU: 2 miliony obliczeń na macierzach o rozmiarze 250x250,
· maksymalny czas trwania: 20 min.
Komentarz: Podwojenie alokacji rdzeni procesora dla maszyny wirtualnej umożliwiło wykonanie testu w czasie 17 min 36 s. Każdy wątek mógł wykorzystać 25,68% jednego rdzenia spośród zaalokowanych zasobów procesora.
a) Próba nr 3:
· VM nr 110,
· 16 GB pamięci RAM,
· 8 rdzeni CPU,
· 15 wątków CPU,
· zadanie CPU: 2 miliony obliczeń na macierzach o rozmiarze 250x250,
· maksymalny czas trwania: 20 min.
Komentarz: Podwojenie alokacji rdzeni procesora dla maszyny wirtualnej umożliwiło wykonanie testu w czasie 8 min 12 s, czyli o około 53% krótszym niż poprzedni. Każdy wątek mógł wykorzystać 51,12% jednego rdzenia spośród zaalokowanych zasobów procesora.
a) Próba nr 4:
· VM nr 110,
· 32 GB pamięci RAM,
· 8 rdzeni CPU,
· 15 wątków CPU,
· zadanie CPU: 2 miliony obliczeń na macierzach o rozmiarze 250x250
· maksymalny czas trwania: 20 min.
Komentarz: Podwojenie alokacji pamięci RAM dla maszyny wirtualnej niczego nie zmieniło, potwierdzając, że test dotyczy operacji procesora.
a) Próba nr 5:
· VM nr 110,
· 16 GB pamięci RAM,
· 16 rdzeni CPU,
· 15 wątków CPU,
· zadanie CPU: 2 miliony obliczeń na macierzach o rozmiarze 250x250,
· maksymalny czas trwania: 20 min.
Komentarz: Podwojenie alokacji rdzeni procesora dla maszyny wirtualnej umożliwiło wykonanie testu w czasie 4 min 32 s, czyli o około 45% krótszym niż poprzedni. Każdy wątek mógł wykorzystać 99,35% jednego rdzenia spośród zaalokowanych zasobów procesora.
a) Próba nr 6:
· VM nr 110,
· 16 GB pamięci RAM,
· 24 rdzenie CPU,
· 15 wątków CPU,
· zadanie CPU: 2 miliony obliczeń na macierzach o rozmiarze 250x250,
· maksymalny czas trwania: 20 min.
Komentarz: Zwiększenie o 50% alokacji rdzeni procesora dla maszyny wirtualnej niewiele zmieniło, bo próba wykonała się w czasie 4 min 21 s, czyli o około 4% krótszym niż poprzednia. Każdy wątek mógł wykorzystać 100% jednego rdzenia spośród zaalokowanych zasobów procesora. Oznacza to, że zadanie nie mogło być wykonane szybciej. W poprzedniej próbie niemal osiągnięty został poziom 100% i prawdopodobnie dodanie jednego rdzenia do 16, dałoby taki sam wynik jak w analizowanej próbie.
Podsumowanie: Na podstawie kilku prób, składających się na scenariusz testowy, można zauważyć, że kolejne zmiany alokacji zasobów procesora (rdzenie) dla maszyny wirtualnej, znacząco skracały czas wykonania zadania, dopóki każdy z jego wątków nie miał do dyspozycji jednego rdzenia procesora na wyłączność. Po osiągnięciu takiego stanu, dalsze zwiększanie ilości rdzeni alokowanych wirtualnej maszynie, nie miało już sensu, bo „nadmiarowe” rdzenie nie brały udziału w realizacji zadania. Generalnie, jeden wątek zadania wykorzystuje maksymalnie jeden rdzeń, ale jeden rdzeń może być wykorzystywany przez wiele wątków. Ta prosta reguła została doskonale ukazana w przeprowadzonym teście. Ponadto potwierdzone zostało, że czas wykonania zadania jest wprost proporcjonalny do ilości przydzielonych rdzeni, dopóki ilość rdzeni jest mniejsza od ilości wątków. Można z tego wyciągnąć dwojakie wnioski. Rejestrowanie ilości aktywnych wątków mogłoby udoskonalić algorytm dynamicznej alokacji zasobów, poprzez optymalizację przydziałów dokonywanych dla bardzo obciążonych maszyn wirtualnych. Możliwe, że w pewnych sytuacjach warto pozostawić wyższe obciążenie, nie angażując dodatkowych rdzeni, które i tak już nie spowodują bardziej ekonomicznego wykonania zadania. Czas wykonania zadania ma wpływ na ilość mocy pobieranej przez serwer. Przyśpieszanie zadań, które generują najwięcej obciążenia na serwerze, jest dodatkowym efektem dynamicznej alokacji zasobów. Zatem możliwe są do osiągnięcia dodatkowe oszczędności energii, obserwowane w dłuższej perspektywie czasu. Zidentyfikowane korelacje wymagają poszerzenia procesu akwizycji danych o dodatkowe informacje statystyczne oraz wdrożenia bardziej zaawansowanych modeli uczenia maszynowego, pozwalających przetwarzać znacznie szerszy zbiór danych. Algorytmy powinny dążyć do znajdowania najlepszego balansu między poziomem obciążenia i czasem wykonywania zadań, poprzez dynamiczną alokację zasobów, wpływając ostatecznie na obniżenie zużycia energii elektrycznej przez serwer.
Test 6:
Badanie wpływu alokacji zasobów na szybkość wykonywania dokładnie takich samych zadań przez maszyny wirtualne i pobór mocy przez serwer, w środowisku laboratoryjnym, w warunkach symulujących rzeczywiste. Badanie o charakterze koncepcyjno-kierunkowym, dające pogląd na korelacje między alokacją zasobów, szybkością wykonywania zadań, a poborem mocy przez serwer.
Metodologia: Testy zostały wykonane na trzech maszynach wirtualnych z zainstalowanym systemem operacyjnym Ubuntu (Linux), przy zastosowaniu programu stress-ng. Komenda uruchamiająca procesy: stress-ng --matrix 10 --matrix-ops 6000000 --matrix-method all --matrix-size 250 --timeout 60m --metrics, czyli 10 wątków i 6 milionów obliczeń na macierzach o rozmiarze 250x250, w czasie maksymalnie 60 minut. Obciążenie procesora generowane było poprzez dokładnie takie same zadania, równocześnie na wszystkich maszynach wirtualnych.
Podsumowanie:
Wykres przedstawia poziom obciążenia zasobów procesora poszczególnych maszyn wirtualnych oraz pobór mocy przez serwer. Przebieg poboru mocy został podzielony na segmenty, poprzez oznaczenie kluczowych zdarzeń w czasie, zwłaszcza początków i końców zadań, które wyznaczyły jednocześnie poziome linie, dopełniające segmentacji. Kolorowanie segmentów wykresu jest pewnym uogólnieniem, bo wyznaczenie dokładnego podziału nie jest możliwe, zwłaszcza w tych miejscach gdzie pobór mocy zależny jest od wykonywania zadań na wielu maszynach wirtualnych. Jednakże takie przedstawienie wyników testu pozwala wyobrazić sobie wpływ pracy poszczególnych maszyn wirtualnych na pobór energii przez serwer oraz wpływ alokacji zasobów na szybkość wykonania zadania. Poziomy obciążenia procesora i czasy wykonywania zadań rzutują na pobór mocy, co zostało doskonale zobrazowane. Maszyna wirtualna nr 112 miała przydzielonych 16 rdzeni do obsługi 10 wątków, dlatego zadanie zostało wykonane najszybciej (kolor czerwony), zużywając około 65% zasobów procesora. Maszyna wirtualna nr 111 miała przydzielone tylko 4 rdzenie do obsługi 10 wątków, dlatego zadanie wykonywało się najdłużej (kolor żółty), zużywając około 100% zasobów procesora. Maszyna wirtualna nr 110 miała przydzielonych 7 rdzeni do obsługi 10 wątków, dlatego zadanie również zużywało 100% zasobów procesora, ale czas wykonania był bliższy najkrótszemu (kolor niebieski). Pokolorowane obszary posłużyły do oszacowania poboru mocy w czasie, oczywiście mając na uwadze niedokładność tej metody. Pominięte zostały obszary niepewności i zbocza, które są niedokładne ze względu na częstotliwość próbkowania. Oszacowane zużycie energii elektrycznej w czasie pokazuje, że obszar niebieski i czerwony są podobne, a żółty jest od nich większy o około 40%. To oznacza, że alokacja zasobów zbliżona do optymalnej lub większa, prowadzi nie tylko do szybszego ukończenia zadania, ale również do oszczędności energii. Z drugiej strony, przesadnie duży przydział ilości rdzeni procesora nie prowadzi do dalszych oszczędności energii. Ilość zasobów całego serwera ma swoje ograniczenia, zatem alokacja powinna cechować się również oszczędnością zasobów. Gdyby przydzielono więcej rdzeni maszynie nr 112, nie wpłynęłoby to na szybkość zadania i pobór mocy, tylko na poziom wykorzystania zasobów procesora. Potwierdza to wnioski z poprzedniego testu, że warto byłoby obserwować ilość wątków używanych do wykonywania zadań, a następnie optymalizować zmiany alokacji zasobów. W pewnych sytuacjach ważniejsze może być dopasowanie ilości rdzeni i wątków do zadań wirtualnej maszyny, niż poziom obciążenia zasobów procesora. To wymaga dalszych badań oraz rozwoju procesów dynamicznej alokacji zasobów, zwłaszcza poszerzenia zbioru danych wejściowych, wdrożenia jeszcze bardziej zaawansowanych modeli uczenia maszynowego i opracowania algorytmów diagnostyki usług.