Od jakiegoś czasu próbuję dowiedzieć się, dlaczego sporo naszych krytycznych systemów biznesowych otrzymuje raporty o „spowolnieniu”, od łagodnego do ekstremalnego. Niedawno zwróciłem uwagę na środowisko VMware, w którym hostowane są wszystkie omawiane serwery.
Niedawno pobrałem i zainstalowałem wersję próbną pakietu zarządzania Veeam VMware dla SCOM 2012, ale trudno mi jest uwierzyć (podobnie jak mój szef) w liczby, które mi przekazuje. Aby przekonać mojego szefa, że podane mi liczby są prawdziwe, zacząłem szukać samego klienta VMware w celu zweryfikowania wyników.
Przejrzałem ten artykuł KB VMware ; specjalnie dla definicji Co-Stop, która jest zdefiniowana jako:
Czas, przez który maszyna wirtualna MP była gotowa do uruchomienia, ale spowodowała opóźnienie z powodu niezgodności harmonogramu co-vCPU
Które tłumaczę
System operacyjny gościa potrzebuje czasu od hosta, ale musi czekać na dostępność zasobów, dlatego może zostać uznany za „niereagujący”
Czy to tłumaczenie wydaje się poprawne?
Jeśli tak, to tutaj trudno mi uwierzyć w to, co widzę: host, który zawiera większość maszyn wirtualnych, które są „wolne”, obecnie pokazuje średnią zatrzymania CPU wynoszącą 127 835.94 milisekund!
Czy to oznacza, że średnio maszyny wirtualne na tym hoście muszą czekać ponad 2 minuty na czas procesora?
Ten host ma dwa 4-rdzeniowe procesory i ma gościa z procesorem 1x8 i gościa z procesorem 14x4.
źródło
Odpowiedzi:
Mogę opisać niektóre doświadczenia, które miałem w tej dziedzinie ...
Nie sądzę, aby VMware w odpowiedni sposób informował klientów ( lub administratorów ) o najlepszych praktykach, ani nie aktualizował wcześniejszych dobrych praktyk w miarę ewolucji ich produktów. To pytanie jest przykładem tego, jak podstawowa koncepcja, taka jak alokacja vCPU, nie jest w pełni zrozumiała. Najlepszym rozwiązaniem jest rozpoczęcie od małej, z pojedynczym vCPU, aż do ustalenia, że maszyna wirtualna wymaga więcej.
W przypadku OP serwer hosta ESXi ma dwa czterordzeniowe procesory, co daje 8 rdzeni fizycznych.
Opisany układ maszyny wirtualnej to 15 gości; 1 x 8 vCPU i 14 x 4 vCPU. To zdecydowanie zbyt duże zaangażowanie, szczególnie w przypadku istnienia jednego gościa z 8 procesorami vCPU . To nie ma sensu. Jeśli potrzebujesz maszyny wirtualnej tak dużej, prawdopodobnie potrzebujesz większego serwera.
Spróbuj odpowiednio dobrać swoje maszyny wirtualne. Jestem pewien, że większość z nich może żyć z 2 vCPU. Dodanie wirtualnych procesorów nie przyspiesza działania, więc jeśli jest to rozwiązanie problemu z wydajnością, jest to niewłaściwe podejście.
W większości środowisk pamięć RAM jest najbardziej ograniczonym zasobem. Ale procesor może stanowić problem, jeśli występuje zbyt duża rywalizacja. Masz na to dowód. Pamięć RAM może również stanowić problem, jeśli za dużo maszyn wirtualnych zostanie przydzielonych .
Można to monitorować. Metryka, której szukasz, to „% gotowości procesora”. Możesz uzyskać dostęp do tego od klienta vSphere wybierając VM i przechodząc do
Performance
>Overview
> CPU wykresie.Zwróć uwagę na żółtą linię na poniższym wykresie.
Czy mógłbyś sprawdzić to na swoich problemach z maszynami wirtualnymi i zgłaszać z powrotem?
źródło
W komentarzach stwierdzasz, że masz dwurdzeniowy host ESXi i korzystasz z jednej maszyny wirtualnej 8vCPU i czternastu maszyn wirtualnych 4vCPU.
Gdyby takie było moje środowisko, uznałbym to za rażąco nadmiernie rezerwowane . Na tym sprzęcie umieściłbym co najwyżej czterech do sześciu gości 4vCPU. (Zakłada się, że dane maszyny wirtualne mają obciążenie, które wymaga, aby miały tak wysoką liczbę vCPU).
Zakładam, że nie znasz złotej zasady ... w VMware nigdy nie powinieneś przypisywać VM więcej rdzeni, niż potrzebuje. Powód? VMware stosuje nieco ścisłe współsprawianie, które utrudnia maszynom wirtualnym uzyskanie czasu procesora, chyba że dostępnych jest tyle rdzeni, ile przydzielono maszynie wirtualnej. Oznacza to, że maszyna wirtualna 4vCPU nie może wykonać 1 jednostki pracy, dopóki nie zostaną otwarte 4 fizyczne rdzenie w tym samym momencie. Innymi słowy, architektonicznie lepiej jest mieć maszynę wirtualną 1vCPU z obciążeniem procesora 90%, a następnie maszynę wirtualną 2vCPU z obciążeniem 45% na rdzeń.
Więc ... ZAWSZE twórz maszyny wirtualne z minimum vCPU i dodawaj je tylko wtedy, gdy jest to konieczne.
W tej sytuacji użyj Veeam do monitorowania zużycia procesora przez gości. Zmniejsz liczbę vCPU na jak największej liczbie. Byłbym skłonny założyć się, że możesz spaść do 2vCPU na prawie wszystkich swoich obecnych gości 4vCPU.
To prawda, że jeśli wszystkie te maszyny wirtualne faktycznie obciążają procesor, aby wymagać liczby procesorów vCPU, to po prostu trzeba kupić dodatkowy sprzęt.
źródło
127 835.94 milisekund to suma i musisz podzielić czas próbkowania, aby uzyskać prawidłowe wartości% RDY. Wygląda jednak na to, że już teraz otrzymujesz prawidłowe odczyty% RDY. Możesz osiągnąć całkiem wysoki współczynnik vCPU do fizycznego procesora, ale nie tak, jak to robisz.
Masz o wiele za dużo wirtualnych maszyn wirtualnych vCPU, a nawet 8 maszyn wirtualnych vCPU. Istnieją już pewne odpowiedzi jakościowe omawiające dobór odpowiednich rozmiarów i pewne konsekwencje braku konsolidacji cykli do mniejszej liczby procesorów wirtualnych. Jedyne, co chciałem wyjaśnić, to fakt, że chociaż nie jest już tak, że maszyna wirtualna musi czekać na liczbę fizycznych procesorów równą liczbie procesorów vCPU, zanim będzie można przetworzyć dowolną instrukcję, jest to bardzo szkodliwe nadmiernej alokacji tej wielkości w stosunku do maszyn wirtualnych z wieloma procesorami vCPU do rdzeni fizycznych. 64 procesorów vCPU na 8 rdzeniach znacznie przekracza maksymalny stosunek 4 do 1. Zakładam, że masz HT na tych procesorach, więc masz 16 rdzeni logicznych? Może to być poprawne w przypadku 1 i 2 maszyn wirtualnych vCPU, które mają niewielkie obciążenie, ale jeśli masz duże obciążenie maszyn wirtualnych, byłoby to trudne.
Do Twojej wiadomości Procesory HT nie są używane w obliczeniach% wykorzystywanego procesora - co oznacza, że jeśli na serwerze masz 32 rdzeń logiczny działający z częstotliwością 2,4 Ghz, to jesteś w 100% wykorzystywany, gdy osiągniesz 38,4 GHz. Dlatego gdy widzisz średnie obciążenia pokazujące więcej niż 1,0, właśnie dlatego.
Oto host ESXi, w którym działa współczynnik vCPU 3,5 do 1 procesora fizycznego (w tym rdzeni HT) ze średnim% RDY wynoszącym 3%.
źródło
Od tamtej pory zainstalowaliśmy Veeam ONE, który rzucił sporo światła na nasze problemy z wydajnością. Patrząc na ekran wąskich gardeł procesora w Veeam ONE, a następnie wykorzystując rozwiązywanie problemów z maszyną wirtualną, która przestała odpowiadać: porównanie użycia procesora VMM i gościa jako odniesienie doszliśmy do wniosku, gdzie jest miejsce na naszą „niedopuszczalną” rywalizację.
Jedną małą wskazówką, którą chciałem się szczególnie podzielić, jest to, że w jednym przypadku nie mogłem wyeliminować rywalizacji procesora, dopóki nie usunąłem migawki na maszynie wirtualnej. Mam nadzieję, że to komuś pomoże.
źródło