Definicja nadmiaru pamięci w maszynie wirtualnej gościa

Podczas administrowania maszynami wirtualnymi-gośćmi uruchomionymi na hostach wirtualizacyjnych (czy to VMWare ESXi, czy Hyper-V), analizując problemy z wydajnością, często napotyka się sytuacje, w których ilość dostępnej pamięci systemu operacyjnego jest znacznie mniejsza niż widzi (przypisany) system operacyjny. Na przykład maszynie wirtualnej przydzielono 8 GB pamięci, menedżer zadań pokazuje 1 GB wolnej pamięci, a całkowite zużycie pamięci przez wszystkie uruchomione procesy nie przekracza 3 GB. Gdzie poszły pozostałe 4 GB??

Zazwyczaj przyczyną takiego zachowania jest użycie funkcji nadmiernego polecenia pamięci w hiperwizorze.

Przeładowanie pamięci (Nie znam definicji w języku rosyjskim, niech będzie przesadna pamięć). Jest to funkcja hiperwizora, która pozwala na przydzielenie większej ilości pamięci maszynom wirtualnym niż na hoście fizycznym, ale bez gwarancji, że w danym momencie można przydzielić całą żądaną pamięć. Z reguły overcommit pozwala zwiększyć gęstość maszyn wirtualnych na hoście, ponieważ pamięć zostanie dynamicznie rozdzielona między nimi w zależności od bieżącego obciążenia (zasoby nieobciążonych / bezczynnych maszyn wirtualnych można rozdzielić między bardziej obciążone)

W VMWare jednym z mechanizmów implementacji nadmiernej pamięci jest Balonowanie pamięci (wypieranie pamięci lub, jeśli chcesz, wyłudzanie). W Hyper-V podobna funkcjonalność jest implementowana przez funkcję Pamięć dynamiczna.

Uwaga. Nawiasem mówiąc, zarówno VMWare, jak i Hyper-V używają kompresji pamięci szeroko i dość skutecznie, aby zaoszczędzić pamięć i wdrożyć nadmiarową technologię..

W VMWare piłka jest implementowana przez sterownik vmmemctl.sys (zawarte w VMware Tools), które w razie potrzeby mogą przechwycić pamięć fizyczną poprzez napompowanie fikcyjnego procesu kuli wewnątrz pamięci (balon). W ten sposób zajmowana pamięć staje się niedostępna dla aplikacji, a hiperwizor może redystrybuować zwolnioną pamięć między innymi maszynami wirtualnymi. Pamięć dynamiczna Hyper-V korzysta ze sterownika dmvsc.sys z zestawu usług integracyjnych (komponent Dynamic Memory VSC). Ustawienia nadmiaru są kontrolowane przez administratora hiperwizora..

Ale jak ustalić z poziomu maszyny wirtualnej, że faktycznie ma ona mniej dostępnej pamięci fizycznej niż ta, którą widzi system operacyjny?

Zastanów się, jak określić obecność i rozmiar sterownika balonu w systemie-gościu Windows. Przeanalizujemy więc następującą sytuację:

Maszyny wirtualne z gościnnym systemem Windows Server 2012 R2 przydzieliły 8 GB pamięci RAM. Menedżer zadań pokazuje, że pamięć jest wykorzystywana w 93% (7,4 GB pamięci jest zajęte). Jeśli jednak zsumujesz ilość pamięci używanej przez wszystkie uruchomione procesy, możesz dojść do nieoczekiwanego wniosku - w rzeczywistości wykorzystywane jest tylko 2,5 GB. Gdzie poszło 5 GB pamięci? Ani Menedżer zadań, ani Monitor zasobów nie odpowiedzą na to pytanie..

Aby zrozumieć, co dzieje się z pamięcią, musisz użyć narzędzia Rammap Mark Rusinovich (w jednym z poprzednich przypadków pokazałem, jak używać tego narzędzia do diagnozowania problemu z pamięcią podręczną systemu plików). Pobierz narzędzie ze strony Microsoft (https://technet.microsoft.com/en-us/library/ff700229.aspx) i uruchom je z uprawnieniami administratora. Następnie na karcie Użyj liczby widzimy, że większość pamięci (5,4 GB) jest używana przez obiekt Sterownik zablokowany.

Jest to pamięć, którą hiperwizor „zjadł” i redystrybuował na inne maszyny wirtualne za pośrednictwem sterownika balonu w systemie-gościu. Tj. nie ma wystarczającej ilości pamięci na hoście hiperwizora lub administrator hiperwizora siłą „zabił” zasoby dla tej maszyny wirtualnej.

Bieżący układ pamięci w maszynach wirtualnych na Hyper-V może być podany przez indywidualne liczniki wydajności w Monitorze wydajności:

  • Pamięć dynamiczna Hyper-V -> Pamięć widoczna dla gości
  • Pamięć dynamiczna Hyper-V -> Pamięć fizyczna

Aby wyłączyć to zachowanie, administrator hiperwizora musi wyłączyć tę opcję w ustawieniach maszyny wirtualnej Hyper-V Włącz pamięć dynamicznąy (lub zwiększ minimalną wartość rezerwacji).

Jeśli korzystasz z hosta VMWare ESXi, możesz użyć ustawień alokacji zasobów (Ustawienia zasobów) zarezerwować więcej pamięci dla tego urządzenia lub natychmiast zarezerwować całą pamięć - Zarezerwuj całą pamięć gościa (wszystkie zablokowane).