cat-hyper-v

Einblicke in Dynamic Memory für Hyper-V

HYPER-V

Mit Service Pack 1 (SP1) für Windows Server 2008 R2 wird Hyper-V um eine weitere wichtige Funktion erweitert, um Dynamic Memory. Mit dieser Erneuerung wird die Memory Konfiguration einer Virtual Machine (VM) einfacher, indem jeweils ein Start- und Maximalwert definiert wird und zukünftig die Zuweisung dynamisch erfolgt. Die VMs teilen dem Hypervisor jeweils den Memory Bedarf mit – verfügt dieser über genügend Memory so kann die VM darüber verfügen.

Wichtig, Dynamic Memory ist ein “Over-Subscription” und kein “Over-Commit” Feature (bekannt von VMware). Das heisst es kann nicht mehr Memory verwendet werden als der Hyper-V Host bereitstellen kann, sprich physikalisch vorhanden ist! Ein kleines Beispiel zum Unterschied der beiden Features: Over-Subscription ist, wenn eine Fluggesellschaft zu viele Flugtickets für den gleichen Flug verkauft hat. Over-Commit ist, wenn all diese Personen auftauchen.

How it works

Eine VM startet mit einem Minimal Wert an Memory, zum Beispiel 512 MB. Sobald der Memory Bedarf steigt und mehr Ressourcen benötigt werden, bezieht ein “Virtual Service Consumer” (VSC) Driver, im Kernel Mode der VM, zusätzliches Memory vom Hyper-V Host und weisst dies der VM zu. Wie der der VSC Driver funktioniert, lässt sich am besten mit der Architektur des Hypervisor zeigen:

Sobald eine VM dieses Memory nicht mehr benötigt, kommt das “Ballooning” zum Zug. Da nur die wenigsten Guest OS damit umgehen können, dass im laufenden Betrieb Memory weggenommen wird, muss bei Dynamic Memory eine andere Methode angewendet werden. Damit das erforderliche Memory nicht mehr für das OS verfügbar ist, reserviert der VSC dieses einfach. Da das Guest OS dies nun nicht mehr belegen wird, gibt der VSC das freie / ballooned Memory dem Host zurück damit dies anderen VMs bereitgestellt werden kann.

Folgende Einstellungen können für Dynamic Memory vorgenommen werden:

Startup und Maximum RAM – Mit “Startup RAM” wird die minimale Grösse des Memory welcher einer VM beim Power On zur Verfügung steht. Dieser Wert muss gross genug sein, damit ein OS gestartet werden kann. Als Default für Minimum RAM sind 512 MB konfiguriert. Mit “Maximum RAM” wird die maximale Grösse des Memory begrenzt. Ein VM kann allerdings nie mehr Memory adressieren als das Guest OS unterstützt. Der Default für Maximum RAM sind 64 GB.

Memory Buffer – Mit dem Buffer wird definiert wie viel zusätzliches Memory einer VM jeweils zugewiesen werden soll. Für jede VM kann ein zusätzlich zum Total Committed Memory ein Buffer zwischen 5 und 2‘000% konfiguriert werden. Dieses zusätzliche Memory kann dann für System File Cache genutzt werden um die Performance des OS zu verbessern. Steht nicht genügend Memory zur Verfügung, wird der Buffer allerdings nicht angewendet. Der Default eines Buffer ist 20%.

Memory Weight (in Beta noch als “Memory Priority” bezeichnet) – Mit der Gewichtung werden Anfragen nach mehr Memory gesteuert, wenn bereits sämtlich verfügbares Memory an andere VMs zugewiesen wurde. In anderen Worten gesagt, je höher die Gewichtung einer VM – desto weniger Memory wird dieser VM durch den VSC entfernt wenn der Hyper-V Hosts voll ausgelastet sein sollte.
.

Lizenzierung

Folgende Operating Systems, jeweils in der 32- und 64-Bit Version, können Dynamic Memory von SP1 nutzen:

  • Windows Server 2003 / 2003 R2 / 2008 / 2008 R2 Web, Standard, Enterprise und Datacenter Edition
  • Windows Vista / 7 Enterprise und Ultimate Edition

Aus der Sicht von Hyper-V könnte Dynamic Memory auch für ein unsupported OS aktiviert werden. Allerdings wird diese VM nie mehr als das zugewiesene Startup RAM verwenden können. Ob später Dynamic Memory auch für Linux Guests unterstützt wird, ist zum aktuellen Zeitpunkt nicht klar und wird durch Microsoft auch nicht kommentiert.

Konfiguration des Hyper-V Hosts

Sämtliche Hyper-V Hosts müssen mit dem SP 1 ausgestattet werden. In einem Failover Cluster sollte Dynamic Memory (oder RemoteFX) nicht aktiviert werden, bevor nicht sämtliche Nodes in diesem Cluster aktualisiert wurden. Das Vorgehen für die Installation von Service Packs in einem Failover Cluster wird in KB 174799 beschrieben. Für die Installation von SP1 wird zwischen 2.5 und 3.3 GB freien Disk Space benötigt. Will man bei Server Core nicht auf Windows Update, oder WSUS zurückgreifen, kann der Setup auch wie folgt aufgerufen werden: Windows6.1-kb976932-nnn.exe /quiet /norestart

Nebst der Installation von SP1 auf dem Host muss auch eine Memory Reserve eingebaut werden. Andernfalls kann es dazu kommen, dass die Parent Partition nicht mehr über genügen Memory verfügt und nicht mehr reagiert – oder sogar in einem Bluescreen endet. Um dies zu verhindern muss folgender Registry Key hinzugefügt werden:

Key: HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Virtualization
Entry: MemoryReserve
Type: DWORD
Value: 2048 (Decimal)

Mit dem Wert “2048” wird 2GB für die Parent Partition reserviert, was dem empfohlenen Wert entspricht. Damit die Einstellung aktiv wird, muss der Host neugestartet werden.

Konfiguration der Guests

Damit Dynamic Memory verwendet werden kann, müssen zunächst die neuen Integration Services (IS) von SP1 installiert werden. Ohne, oder auch ohne aktuelle, IS ist das Betriebssystem der VM nicht in der Lage die neue Funktion zu verwenden.

Nachdem die IS aktualisiert wurden, ist ein Neustart erforderlich. Danach ist “Virtual Dynamic Memory” als neues Device verfügbar. Dies kann zum Beispiel im Device Manager kontrolliert werden und zeigt zugleich dass der Upgrade erfolgreich war: “Server Manager ⇒ Diagnostics ⇒ Device Manager ⇒ System devices”

Der Standardwert für Startup RAM liegt bei 512 MB, das Maximum liegt bei 65‘536 MB, das Minimum bei 8 MB. Bei der Konfiguration muss zwingend berücksichtigt werden, dass ein Guest Operating System über genügend Ressourcen verfügt um starten zu können. Wird das Startup RAM allerdings zu weit nach oben angepasst, so reduziert sich allerdings automatisch die Flexibilität und auch Effektivität von Dynamic Memory.

Der für das jeweilige Operating System empfohlene Wert kann aus der nachfolgenden Tabelle entnommen werden:

Guest Operating System Empfohlenes Startup RAM
Windows Server 2008 R2 512 MB
Windows Server 2008 512 MB
Windows Server 2003 R2 128 MB
Windows Server 2003 128 MB
Windows 7 512 MB
Windows Vista 512 MB

Die Einstellung Maximum RAM definiert, wie viel physikalisches Memory der VM zugewiesen werden kann. Es kann nie mehr Memory verwendet werden als hier definiert wurde – das aktuelle Limit einer Hyper-V VM liegt bei 64 GB, mit oder ohne Dynamic Memory.

Weitere Informationen

Bevor die Registry bearbeitet wird, sollte zwingend ein Backup erstellt werden (siehe KB 322756). Die inkorrekte Verwendung eines Registry-Editors kann schwerwiegende Probleme verursachen. Die Anpassung erfolgt auf eigene Verantwortung.

Hyper-V

, , ,

About the Author

Michel Luescher ist bei Microsoft Corporation als Solution Architect im Center of Excellence (CoE) für Datacenter & Cloud Infrastructure tätig. Michel ist Speaker und Blogger rund um das Thema Microsoft Cloud und bei Microsoft zudem Subject Matter Expert (SME) für Hyper-V + System Center Virtual Machine Manager.

Comments (3)

  • Michael Seidl says:

    Hallo Michel,
    hast du schon Erfahrung ob die 2GB “MemoryReserve” ausreichend sind? Ich dachte hier eher an 4GB?
    lg Michael

     
  • Ralf Schröter says:

    Vielen Dank für den informativen Beitrag, besonders bezüglich des benötigten Registry Keys auf den Hostsystemen.
    Ein schönes Wochenende,

    Ralf

     

Hinterlasse eine Antwort.