Deaktivieren von Ballooning

Manchmal muss man Ballooning bei einer VM einfach abschalten.

Ballooning ist eine von vielen Speichermanagmentmechanismen innerhalb eines ESXi Servers. Zuerst einmal etwas zum Verständnis.

Wir haben einen Host, auf diesem laufen verschiedene VMs. Durch die Hostisolierung merkt ein Betriebssystem eigentlich nicht, dass es auf einer virtuellem Maschine läuft. Je mehr VMs auf so einem Host laufen, desto mehr Speicher wird benötigt und irgendwann landet der Hypervisor an einen Punkt, wo er knapp an Speicherressourcen ist. Aber durch die Hostisolierung merken die VMs davon nicht wirklich viel und haben so auch keinen Grund, nicht mehr benötigten Speicher freizugeben.

Mit den VM Tools wird nun der Ballooningtreiber mitinstalliert, der in diese Lücke springt. Dieser Treiber hat keinen externe Schnittstelle zum Betriebssystem, kommuniziert aber über einen privaten Kanal mit dem Hypervisor. Der Hypervisor befragt nun, via diesen Balloontreiber, die VMs, wieviel Speicher könntest du mir notfalls "abgeben". Diesen Wert merkt sich der Hypervisor. Sollte es jetzt nun zu einem Engpass kommen auf dem Host, verlangt der Host diesen Speicher.

Was macht nun die VM daraus? Der Treiber erstellt nun eine VMDK, welcher so gross wie der versprochene Speicher ist (Balloon inflating). Dann beginnt er, Daten aus dem Speicher in diesen Ballon umzufüllen. Für die VM bleibt dieser Speicher nach wie vor da, wie er war, aber in Wirklichkeit ist dieser nun auf einem Datenspeicher. Ist dieser Vorgang abgeschlossen, gibt der Hypervisor diesen Speicher, welcher nun frei ist (reclaimed) der benötigten Instanz.

Hat sich das ganze wieder erholt, teilt der Hypervisor dies dem Ballooningtreiber mit. Dieser beginnt nun, die ausgelagerten Daten wieder in den Speicher zu laden und entlädt die VMDK wieder (Balloon deflating).

https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/perf-vsphere-memory_management.pdf

 

Nun kann es aber passieren, dass im Betriebssystem bereits eine erweiterte Swapkonfiguration gemacht wurde, was sich manchmal nit ganz mit dem Treiber verträgt. Hier kommt es dann zum Beispiel zu ganz unglücklichen Situationen, dass eine VM dazu aufgefordert wird, sein Ballooning auszunutzen. Das Betriebssystem reserviert sich das ganze Memory via Pagefile und wird dann aufgefordert, diesen Speicher mit Ballooning freizumachen. Sprich eine Swap auf der Harddisk wird zusätzlich in den Datastore geladen.

Das passiert vorallem dann, wenn sich zum Beispiel Dritte nicht an Vorgaben halten und selbstständig Swapfiles konfigurieren.

So nun kann man die Swapkonfiguration einfach deaktivieren gehen und das ganze hat sich dann erledigt. Eine weiter Möglichkeit ist aber, der VM zu sagen, lass das mit dem Ballooning einfach sein. Das ist zum Beispiel dann der Fall, wenn der Lieferant weigert, die Swap zu deaktivieren.

Zum deaktivieren der Ballooningfunktionalität gibt es zweierlei Wege: in der VM-Konfiguration, oder via Betriebssystem (kann bequem per GPO verteilt werden).

 

Via VM-Konfiguration (HTML5)

  1. VM herunterfahren
  2. VM -> Edit Settings -> VM Options - Advanced -> Configuration Parameters -> Edit Configutration...
  3. Add a Configuration Line
    1. Name: sched.mem.maxmemctl
    2. Value: 0
    3. Bestätigen
  4. VM starten

Zum wieder aktivieren des Balloning -> VM herunterfahren -> Wert entfernen oder auf 1 stellen -> VM starten.

 

Via Registry

  1. Öffne den "regedit"
  2. Navigiere zu "\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\VMMEMCTL"
  3. Ändere den Schlüssel "Start" von 2 nach 4
  4. Starte die VM neu

Zum wieder aktivieren -> regedit -> Schlüssel Start von 4 nach 2 ändern -> VM neustarten.

Dieser Weg ist natürlich auch ganz toll, da man hierüber via GPO die Registry auf eine Masse applizieren könnte. Das Ausschalten von Ballooning empfehle ich aber nur in Ausnahmefällen!

Via Registry kann noch das Verhalten ein wenig mehr verändert werden, siehe dazu folgender KB-Artikel: https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.monitoring.doc/GUID-88CA95AD-A583-4EF6-838E-D92C87B0BB00.html?hWord=N4IghgNiBcIEaQgeyQOwJaoOYgL5A

https://kb.vmware.com/articleview?docid=1002586

ballooning


Drucken