Jak opisać wymagania dotyczące wydajności VMware dla naszej aplikacji do administratora VMware?

23

Często instalacja naszej aplikacji opartej na stabilnej wersji Debiana działa na maszynie wirtualnej - zazwyczaj w VMware ESXi. W ogólnym przypadku nie mamy wglądu ani wpływu na ich środowisko wirtualizacji i nie mamy dostępu np. Do klienta VMware vCenter lub równoważnego. Skupiam się tutaj na VMware, ponieważ jest to zdecydowanie najbardziej powszechne.

Chcielibyśmy:

  • Powiadom administratora VMware klienta: Możesz uruchomić naszą aplikację np. W środowisku VMware ESX, o ile spełnia ona kryteria wydajności X, Y i Z.
  • Być w stanie ustalić, czy kryteria X, Y i Z są faktycznie spełniane w sposób ciągły (np. Również teraz ), nawet w działającym systemie (nie możemy zatrzymać naszej aplikacji i uruchomić testów porównawczych, a początkowy test porównawczy nie wystarczy, ponieważ wydajność w środowiska wirtualne zmieniają się w czasie).
  • Miej pewność, że jeśli spełnione zostaną kryteria X, Y i Z, będziemy mieli odpowiednie wirtualne zasoby sprzętowe, aby uruchomić naszą aplikację z zadowalającą wydajnością.

Co to są X, Y i Z?

Wielokrotnie widzieliśmy, że gdy występują problemy z wydajnością, problem nie dotyczy naszej aplikacji, ale środowiska wirtualizacji. Np. Inna maszyna wirtualna wykorzystuje mnóstwo procesora, pamięci lub sieci SAN, na której dyski są faktycznie przechowywane, jest intensywnie wykorzystywana przez coś innego niż nasza aplikacja. Obecnie nie możemy tego udowodnić ani obalić.

Teoretycznie może być również możliwe, że czasami nasza aplikacja jest powolna ... ;-)

W jaki sposób określa się główną przyczynę problemów z wydajnością: środowisko wirtualne lub nasza aplikacja?

Zazwyczaj występują 3 obszary problemów z wydajnością Procesor, pamięć i dyskowe operacje we / wy.

procesor

Na przykład VMware administrator może określić rezerwację i limit wyrażony w MHz, ale czy np. 512 MHz na jednym hoście ESX jest dokładnie taki sam jak 512 MHz na innym hoście ESX, być może w zupełnie innym klastrze ESX?

I jak mierzyć, czy rzeczywiście to otrzymujemy? Podczas gdy nasza aplikacja jest uruchomiona, być może możemy zauważyć, że mamy 212% wykorzystania procesora na 4 procesorach. Czy to dlatego, że nasza aplikacja robi dużo, czy dlatego, że inna maszyna wirtualna na tym samym hoście wykonuje zadanie intensywnie wykorzystujące procesor i zużywa cały procesor?

Pamięć (baloniarstwo?)

Jeśli poprosimy o np. 16 GB pamięci RAM, która jest często konfigurowana, ale z powodu balonowania , w rzeczywistości dostajemy tylko 4 GB i, co zaskakujące, nasza aplikacja działa słabo.

Można zapytać narzędzia VMware o bieżące balonowanie, ale okazało się, że często kłamie (lub jest co najmniej niedokładny). Widzieliśmy przykłady, w których system operacyjny uważa, że ​​całkowita pamięć RAM wynosi 16 GB, suma pamięci rezydentnej (RSS) wszystkich procesów wynosi 4 GB pamięci RAM, ale dostępna jest tylko 2 GB pamięci RAM, nawet jeśli narzędzia VMware mówią nam, że balonowanie 0: - (

Również samo dodanie RSS razem nie jest prawidłowe, ponieważ można łatwo udostępnić pamięć RAM, np. Pamięć kopiowania przy zapisie, więc 512 MB + 512 MB niekoniecznie oznacza 1 GB, ale może oznaczać coś mniej. Dlatego nie można po prostu odjąć RSS od wszystkich procesów, aby uzyskać pomiar ilości wolnej pamięci RAM, a tym samym niezawodnie wykryć balonowanie. Można wykryć niektóre przypadki balonowania, ale istnieją inne przypadki, w których balonowanie jest skuteczne, ale nie jest wykrywalne tą metodą.

Dysk I / O

Wydaje mi się, że moglibyśmy wykresować w czasie liczbę odczytów i zapisów na dysku, liczbę odczytanych i zapisanych bajtów oraz% oczekiwania we / wy. Ale czy to da nam dokładny obraz dysku I / O? Wyobrażam sobie, że jeśli górnik Bitcoin działa na innej maszynie wirtualnej używającej całego procesora, nasz% oczekiwania na We / Wy wzrośnie, nawet jeśli bazowa SAN daje dokładnie taką samą wydajność, po prostu dlatego, że zasoby naszego procesora spadną, a zatem IO czeka ( który jest mierzony w% ) idzie w górę.

Podsumowując, w jakim języku możemy opisać np. Administratorowi VMware, jakiej wydajności potrzebujemy w przenośny i mierzalny sposób?

Peter V. Mørch
źródło
Jakie są aktualne wymagania twojej aplikacji? To, co do tej pory opisałeś, nie wystarcza, abym dokładnie oszacował wymagania dotyczące zasobów w moim środowisku, i jestem dobrze zaznajomiony z VMware. Docelowi odbiorcy mieliby jeszcze trudniejszy czas. W praktyce nie uwzględniam wymagań dostawców i nie mierzę / dostosowuję maszyn wirtualnych na podstawie danych historycznych i obserwacji za pomocą vRealize Operations Manager.
ewwhite
1
@ewwhite: W żadnym wypadku nie jestem ekspertem od sprzętu. Ale pozwól mi powiedzieć konkretnie i powiedzieć, że działa dobrze na Core i7-5820K z 8 GB pamięci RAM. Dyski magnetyczne ca. 2015 są w porządku, SSD jest lepsze (w razie potrzeby mogę bardziej szczegółowo). Potrzebujemy 80 GB wolnego miejsca na dysku.
Peter V. Mørch
2
Jako administrator powiedziałbym: „ile rdzeni muszę przydzielić, jakie jest rzeczywiste zapotrzebowanie na pamięć RAM, jakie jest zapotrzebowanie na pamięć z punktu widzenia procesorów IOP i przepustowości, jakie jest tempo wzrostu pamięci, czy wszystko w porządku? z cienkim wyposażeniem itp. ”
ewwhite
Czego wymaga Twoja aplikacja z punktu widzenia wydajności? Czy masz testy porównawcze dla swojej aplikacji? Mówienie "It runs fine with x, y, and z"nie jest wystarczająco precyzyjne. Musisz być w stanie dokładnie powiedzieć swoim klientom, czego wymaga Twoja aplikacja. Jeśli dadzą ci te zasoby, a aplikacja działa słabo, to pytanie nie jest "What do we need from a resource perspective?", ale"Why is it performing poorly even though the proper resources have been allocated?"
joeqwerty
1
@ewwhite: „Resolved”? Nie. Nadal nie mam 25-słówowej enantacji, którą mógłbym przekazać administratorowi VMware, a następnie móc przetestować i wiedzieć, że uzyskamy przewidywalną wydajność, ponieważ, jak wiadomo, „to zależy”. Ale zaakceptowałem twoją odpowiedź, ponieważ uważam, że tak precyzyjne i mierzalne wymaganie nie jest możliwe, a twoje informacje znacznie przyczyniają się do mówienia we właściwym języku. W przyszłości zamierzam zalecić skorzystanie z trasy „Jeśli chcesz, abyśmy rozwiązali problemy z wydajnością, potrzebujemy przynajmniej dostępu do twojego vCenter”.
Peter V. Mørch

Odpowiedzi:

23
  • Poważnie, większość administratorów VMware nie jest w tym dobra: słaba znajomość zarządzania zasobami, często brak znajomości Linuksa (pomaga) i brak przepustowości czasu. Uważam, że większość wewnętrznych administratorów ma trudności z utrzymaniem wiedzy na temat głębokiej wirtualizacji.

  • Na szczęście jest książka, którą możesz przeczytać !

  • Większość środowisk VMware nie jest świetna: zła konstrukcja klastra, złe planowanie zasobów , słaba pamięć (np. Synology NAS), źle skonfigurowana HA, brak monitorowania lub łatania.

  • VMware jako organizacja zawodzi nas: Szczególnie źle radzą sobie z rozpowszechnianiem aktualnych informacji i promowaniem najlepszych praktyk. Podstawowe wyszukiwania często zadawanych pytań generują wyniki z 2009 r. I starszych wersji VMware, mimo że procesy i projekty zmieniły się z czasem.

Wszystkie te rzeczy będą działać przeciwko tobie.

Powinieneś określić rzeczywiste wymagania swojego rozwiązania. Możliwość dokładnego stwierdzenia, że ​​Twoje urządzenie wymaga: 2 procesorów vCPU, 8 GB pamięci RAM i 500 operacji IOP na przechodzenie, by przejść długą drogę dla kogoś takiego jak ja.

Drugim podejściem jest obserwowanie zdrowego lub idealnego środowiska i ekstrapolowanie wskaźników z tego miejsca.

Opisałeś problemy z niektórymi wdrożeniami. Jakie były problemy i wąskie gardła?


Przykład maszyny wirtualnej odpowiedniej wielkości:

Serwer Exchange dla organizacji 300 użytkowników.

  • Mamy 6 tygodni mapowania obciążenia / stresu w funkcji czasu.
  • 6 procesorów vCPU utrzymuje nas powyżej strefy stresu z miejscem buforowym na kolce.
  • 32 GB pamięci RAM utrzymuje nas powyżej wartości stresu, ale nie jest nieuzasadnioną ilością powyżej tego, co jest naprawdę potrzebne.

wprowadź opis zdjęcia tutaj

  • Mógłbym odzyskać kilka GB pamięci RAM i vCPU, ale w sumie jest to wydajna maszyna wirtualna.
  • Mądrze byłoby uzyskać tego rodzaju monitorowanie aplikacji w idealnych warunkach.

wprowadź opis zdjęcia tutaj


Przykłady monitorowania zasobów VM.

Dobrze: - VM ma odpowiednią wielkość. - Procesor jest przeciążony w całym klastrze, ale nie spieramy się.

wprowadź opis zdjęcia tutaj

Źle:

  • Maszyna wirtualna nigdy nie uzyska całej pamięci RAM, z którą jest skonfigurowana.
  • VM już zamienia pamięć RAM.
  • Procesor jest nadmiernie skonfigurowany.

wprowadź opis zdjęcia tutaj

ewwhite
źródło
2
Dzięki, ewwhite za twoją odpowiedź. Dla argumentu, powiedzmy, że u jednego klienta działa świetnie z: 2 vCPU, 8 GB pamięci RAM i wydajnością pamięci 500 procesorów IOP (od twojej odpowiedzi). Na stronie innego klienta prosimy o to samo i otrzymujemy to, zgodnie z administracją VMware. Jednak 2vCPU są współużytkowane z 17 innymi maszynami wirtualnymi wymagającymi dużej mocy obliczeniowej procesora, a 8 GB pamięci RAM jest również balonikowanych. Nie rozumiem bardzo dobrze dysków VM, więc powiedzmy, że faktycznie to dostaliśmy. Nasza aplikacja działa świetnie w pierwszym z tych dwóch środowisk ESXi, a okropnie w drugim. Jak zmierzyć różnicę w maszynach wirtualnych?
Peter V. Mørch
1
Możesz monitorować „ CPU Steal ” u góry w swojej maszynie wirtualnej, aby sprawdzić, czy procesor nie został zbyt mocno przeciążony. W przypadku balonowania / wymiany pamięci RAM trudno jest stwierdzić od wewnątrz maszyny wirtualnej, z wyjątkiem złej wydajności. Możesz jednak poprosić o widok vCenter i zasobów dla maszyny wirtualnej. Zobacz przykłady powyżej.
ewwhite
1
Zajrzę do kradzieży CPU. Czasami zdarza się, że administrator VMware wskazuje palcami na naszą aplikację, a my wskazujemy palcami na wolne środowisko VMware. Jednak najczęściej nie mamy nawet dostępu do vSphere, a wtedy trudno jest go rozwiązać, gdy działa dobrze w innych instalacjach. Myślę, że jednym podejściem może być: „Jeśli chcesz, abyśmy rozwiązali problemy z wydajnością, będziemy potrzebować przynajmniej dostępu do twojego vCenter”
Peter V. Mørch
3
Większość administratorów VMware nawet nie wie, jak czytać te rzeczy. Spędzam dużo czasu po nich sprzątając. Dlatego jako sprzedawca trudno jest poprosić o dostęp lub wgląd w ich konfigurację. Ale myślę, że najlepiej byłoby ugruntować swoje wymagania, a następnie je egzekwować. Chociaż zwykle nie zalecam ustawiania rezerwacji, jeśli twoja aplikacja jest krytyczna, może mieć sens. A przynajmniej ustalenie „priorytetu akcji”. Co robi aplikacja?
ewwhite
1
Czy zastanawialiście się nad dystrybucją tego jako urządzenia VMware z małą, średnią i dużą zalecaną konfiguracją?
ewwhite