drx - Fotolia

Memory Overcommitment und die Auswirkungen auf Dynamic Memory

Dynamic Memory hilft dabei, die VM-Dichte auf Virtualisierungs-Hosts zu erhöhen. Die falsche Verwendung führt aber zu schwerwiegenden Problemen.

Dynamic Memory, also die bedarfsgerechte Vergabe von Arbeitsspeicher, ist schon seit einigen Jahren fester Bestandteil von Enterprise-Hypervisoren wie VMware ESXi oder Microsoft Hyper-V. Dabei wird bis heute heftig darüber diskutiert, ob dynamischer Arbeitspeicher überhaupt genutzt werden sollte, vor allem mit Blick auf das Memory Overcommitment. Wie man schon vermuten kann, gibt es natürlich für beide Ansichten überzeugende Argumente.

Bei der dynamischen Zuweisung von Arbeitsspeicher kann der Hypervisor virtuellen Maschinen unterschiedlich viel Arbeitsspeicher zur Verfügung stellen und diesen je nach Bedarf ändern. Wenn eine virtuelle Maschine mehr Memory benötigt, kann ihr der Hypervisor diesen gewähren – bis zu einem vorher festgelegten Limit. Genauso kann der Hypervisor Arbeitsspeicher einer virtuellen Maschine, der gerade nicht gebraucht wird, einer anderen virtuellen Maschine zuweisen.

Der Hauptvorteil von Dynamic Memory liegt in der Möglichkeit, auf diese Weise eine höhere VM-Dichte zu erreichen. Unter optimalen Bedingungen ist es so also möglich, mehr virtuelle Maschinen auf einem Virtualisierungs-Host unterzubringen.

Dynamic Memory und das Problem des Overcommitments

Ein Argument gegen die Verwendung von Dynamic Memory lautet, dass der einzige Weg zur Nutzung dynamischen Arbeitsspeichers um einer höheren VM-Dichte willen im Memory Overcommitment besteht. Memory Overcommitment bezeichnet dabei das Hochsetzen des Memory-Limits auf allen virtuellen Maschinen eines Hosts über die tatsächlich vorhandene Kapazität des Arbeitsspeichers. Es dürfte klar sein, dass daraus so manches Problem resultieren kann.

Viele Memory-Probleme schon behoben

Hypervisor-Anbieter haben aber immerhin bereits eines der größten Probleme gelöst, das früher gegen Dynamic Memory sprach: Boot-Fehler. Viele Betriebssysteme benötigen beim Starten mehr Arbeitsspeicher als nach dem Boot-Vorgang. Wenn in dieser Situation ein Virtualisierungs-Host bereits an den Grenzen seiner Kapazität angekommen ist und Dynamic Memory genutzt wird, dann würde beim Neustart einer virtuellen Maschine der Boot-Vorgang fehlschlagen, weil die virtuelle Maschine mehr Arbeitsspeicher benötigt, als derzeit vorhanden ist.

In den meisten Hypervisoren ist dieses Problem aber bereits gelöst. Microsoft hat beispielsweise eine Smart-Paging-Datei in Hyper-V integriert, die einer virtuellen Maschine auch bei knappem Arbeitsspeicher das Booten ermöglicht. Trotzdem gibt es auch weitere Probleme, die Performance oder Stabilität einer virtuellen Maschine beeinträchtigen können, wenn Memory-Ressource knapp werden.

Weitere Artikel zum Arbeitsspeicher:

Welche Rolle spielt SLAT bei der Virtualisierung?

Techniken für das Memory-Management.

Hypervisoren und Memory Overcommitment.

Dabei sollte man wissen, dass man dynamischen Arbeitsspeicher durchaus auch ohne Overcommitment der physischen Ressourcen nutzen kann. Dann beschränkt sich der einzige Vorteil aber darauf, dass Workloads während einer Failover-Situation mit einer größeren Wahrscheinlichkeit online bleiben.

Wenn ein Host-Server ausfällt, können hochverfügbare virtuelle Maschinen automatisch auf einen anderen Host migriert werden. Das funktioniert aber nur, wenn der Host ausreichend Hardwareressourcen zur Verfügung hat. Wenn auf einem Host nun Dynamic Memory aktiviert ist, dann kann dieser Host während eines Failovers mehr VMs aufnehmen, als sonst möglich wäre. In dieser speziellen Situation könnte der Zielserver mit Overcommitment konfiguriert sein, auch wenn der ausgefallene es nicht war.

Arbeitsspeicher-Auslastung im Auge behalten

Ein anderes Argument gegen Dynamic Memory lautet, dass manche Anwendungen so viel Arbeitsspeicher in Anspruch nehmen, wie sie nur irgendwie können. Das kann durchaus so gewollt sein oder aber auch durch ein Memory-Leak verursacht werden. In beiden Fällen wäre die Nutzung von dynamischem Arbeitsspeicher wenig effizient, weil die speicherhungrige Applikation die virtuelle Maschine dazu zwingen würde, so viel Arbeitsspeicher wie möglich für sich zu beanspruchen, was die Vorteile von Dynamic Memory zunichte machen würde.

Die Frage bleibt also: Sollte man Dynamic Memory nutzen oder nicht? Dynamischer Arbeitsspeicher hat sicherlich seine Berechtigung im Rechenzentrum, denn wenn die Funktion mit Sorgfalt eingesetzt wird, dann lässt sich die VM-Dichte signifikant erhöhen. Abhängig vom verwendeten Hypervisor kann Dynamic Memory zudem Vorteile während einer Failover-Operation bieten. Trotzdem kann dynamischer Arbeitsspeicher natürlich zu Problemen führen, wenn ein Overcommitment der physischen Ressourcen vorliegt.

Glücklicherweise geht es bei dynamischem Arbeitsspeicher nicht um Alles-oder-Nichts-Fragen. So ist es beispielsweise gängige Praxis, Dynamic Memory auf den virtuellen Maschinen zu aktivieren, auf denen die Funktion Vorteile verspricht, während auf den übrigen VMs statischer Arbeitsspeicher verwendet wird.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Erfahren Sie mehr über Containervirtualisierung

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close