Virtualisierung: Optimieren der Hyper-V-Arbeitsspeichernutzung

Ein dynamischer Arbeitsspeicher kann nützlich sein, Sie müssen jedoch bei der Konfigurierung der virtuellen Computer und des Hostservers sorgfältig vorgehen.

Brien M. Posey

Beim Hosten virtueller Arbeitsauslastungen ist wahrscheinlich keine andere Hardwareressource für die allgemeine Leistung so wichtig wie der physische Arbeitsspeicher. Es ist von wesentlicher Bedeutung, den Arbeitsspeicher so zuzuweisen, dass jeder virtueller Computer den Arbeitsspeicher erhält, den er benötigt, ohne dass dabei Arbeitsspeicher verschwendet wird. Im Folgenden finden Sie einige wichtige Überlegungen hinsichtlich der Zuteilung von Arbeitsspeicher zur Verwendung mit Microsoft Hyper-V.

NUMA-Aspekte

Die Arbeitsspeicherverwaltung für Hyper-V ist eine Art von Kunst. Sie müssen sicherstellen, dass Sie jedem virtuellen Computer eine ausreichende Menge von Arbeitsspeicher bereitstellen. Gleichzeitig müssen Sie vermeiden, einem virtuellen Computer mehr Arbeitsspeicher als notwendig zuzuweisen.

Die Gründe hierfür scheinen offensichtlich zu sein. Die Zuteilung von zu viel Arbeitsspeicher an einen virtuellen Computer senkt die Menge an Arbeitsspeicher, die Sie anderen virtuellen Computern auf dem gleichen Server zuteilen können. Manchmal kann die Zuteilung von zu viel Arbeitsspeicher an einen virtuellen Computer sogar dessen Leistung beeinträchtigen.

Die meisten neuen Server verwenden Non-Uniform Memory Access (NUMA)-Arbeitsspeicher. NUMA-Arbeitsspeicher sollen die Leistung verbessern, indem sie Arbeitsspeicher auf Prozessorbasis zuweisen. Ein Block dedizierten Arbeitsspeichers wird NUMA-Knoten genannt. Eine CPU kann schneller auf ihren lokalen NUMA-Knoten (den Arbeitsspeicher, der dieser CPU direkt zugewiesen ist) als auf einen nicht lokalen NUMA-Knoten zugreifen.

Die Hyper-V-Versionen für Windows Server 2008 und 2008 R2 unterstützen die Arbeitsspeicheraffinität auf NUMA-Knoten-Basis nicht direkt. Mit anderen Worten, Sie können einen virtuellen Computer nicht direkt für die Verwendung eines bestimmten NUMA-Knotens konfigurieren. Diese Funktionalität wird Berichten nach in der Windows Server 8-Version von Hyper-V enthalten sein. Dennoch können Sie Schritte unternehmen, um das Risiko zu senken, dass ein virtueller Computer nicht lokale NUMA-Knoten verwendet.

Der Trick besteht in der Berechnung der Größe der einzelnen NUMA-Knoten. Nehmen wir beispielsweise an, Ihr Server ist mit zwei Octacore-Prozessoren und 128 GB RAM ausgestattet. Sie können den NUMA-Knoten berechnen, indem Sie die Größe des Arbeitsspeichers (128 GB) durch die Anzahl der CPU-Kerne (16) dividieren. In diesem Fall beträgt die Größe eines NUMA-Knotens 8 GB.

Hyper-V ermöglicht Ihnen nicht, einem bestimmten virtuellen Computer einen bestimmten NUMA-Knoten zuzuweisen. Da Sie jedoch wissen, dass die Größe des NUMA-Knotens für diesen bestimmten Server 8 GB beträgt, können Sie schließen, dass ein virtueller Computer, dem mehr als 8 GB RAM zugewiesen werden, mit Sicherheit den Arbeitsspeicher mehrerer NUMA-Knoten verwenden wird. Die Beschränkung des Arbeitsspeichers, der einem virtuellen Computer zugewiesen wird, auf 8 GB oder weniger erhöht (in diesem Fall) die Wahrscheinlichkeit, dass der virtuelle Computer den Arbeitsspeicher eines einzelnen NUMA-Knotens verwendet. Dies verbessert die Leistung.

Hyper-V-Overhead

NUMA-Knoten sind nicht die einzigen Aspekte, die bei der Arbeitsspeicherverwaltung berücksichtigt werden müssen. Bei der Planung der Nutzung des Arbeitsspeichers des Hostservers ist es von kritischer Bedeutung, den Overhead durch Virtualisierung zu berücksichtigen. Es gibt zwei primäre Überlegungen hinsichtlich des Virtualisierungsoverheads. Zunächst müssen Sie Arbeitsspeicher für die übergeordnete Partition reservieren.

Sie müssen mindestens 300 MB für den Hypervisor und 512 MB für das Hostbetriebssystem reservieren, die auf der Rootpartition ausgeführt werden. Die meisten Richtlinien für bewährte Verfahren gehen jedoch davon aus, dass Sie 2 GB für die übergeordnete Partition reservieren sollten.

Sie sollten die Hostpartition ausschließlich für Hyper-V verwenden. (Sie können jedoch auch Sicherheits- und Infrastruktursoftware wie Verwaltungsagenten, Sicherungsagenten und Firewalls ausführen.) Die Empfehlung für 2 GB nimmt daher an, dass Sie keine weiteren Anwendungen oder Serverrollen in der übergeordneten Partition ausführen.

Hyper-V lässt die direkte Zuteilung von Arbeitsspeicher an die Hostpartition nicht zu. Im Wesentlichen wird der Arbeitsspeicher verwendet, der übrig bleibt. Sie müssen also daran denken, dass Sie 2 GB des Arbeitsspeichers des Hostservers nicht zuteilen, sodass diese der übergeordneten Partition zur Verfügung stehen.

Arbeitsspeicherzuteilung für Gastcomputer

Ein weiterer Aspekt, der im Zusammenhang mit dem Virtualisierungsoverhead berücksichtigt werden muss, ist die Tatsache, dass virtuelle Computer einen kleinen Teil des Arbeitsspeichers für Integration Services und andere Prozesse im Zusammenhang mit Virtualisierung verwenden. Die hierfür verwendete Menge an Arbeitsspeicher ist vergleichsweise trivial, sodass Sie in der Regel diesen Prozessen keinen Arbeitsspeicher besonders zuweisen müssen, es sei denn, Sie möchten den einzelnen virtuellen Computern nur das absolute Minimum an Arbeitsspeicher bereitstellen.

Virtuelle Computer mit 1 GB RAM oder weniger verwenden ungefähr 32 MB Arbeitsspeicher für Virtualisierungsoverhead. Für jedes weitere Gigabyte RAM sollten Sie 8 MB hinzufügen. Ein virtueller Computer mit 2 GB RAM verwendet beispielsweise 40 MB (32 MB plus 8 MB) Arbeitsspeicher für Virtualisierungsoverhead. Ähnlich verwendet ein virtueller Computer mit 4 GB Arbeitsspeicher 64 MB Arbeitsspeicher für Virtualisierungsoverhead.

Dynamischer Arbeitsspeicher

Windows Server 2008 R2 SP1 führte die neue Funktion des dynamischen Arbeitsspeichers ein, mit der virtuelle Computer den Arbeitsspeicher dynamisch auf der Basis der aktuellen Arbeitsauslastung verwenden. So können Sie den physischen Arbeitsspeicher des Servers auch für die Ausführung einer größeren Anzahl virtueller Computer verwenden, als es normalerweise möglich wäre. Trotz der Vorteile des dynamischen Arbeitsspeichers ist es wichtig, einige Richtlinien für bewährte Verfahren zu befolgen, um zu vermeiden, dass den virtuellen Computern Arbeitsspeicher fehlt.

Zunächst ist die Verwendung von dynamischen Arbeitsspeicher nicht immer die beste Option. Sie können den dynamischen Arbeitsspeicher für jeden einzelnen virtuellen Computer aktivieren oder deaktivieren. Es ist wichtig, den dynamischen Arbeitsspeicher nur für die virtuellen Computer zu aktivieren, die davon wirklich profitieren können.

Einer der wichtigsten Faktoren ist die Arbeitsauslastung der virtuellen Computer. Wenn eine Anwendung auf einem virtuellen Computer eine feste Menge Arbeitsspeicher verwendet, ist es besser, diesem virtuellen Computer genau die benötigte Menge Arbeitsspeicher zuzuteilen, anstatt dynamischen Arbeitsspeicher zu verwenden.

Das gleiche gilt für Anwendungen, die sehr viel Arbeitsspeicher benötigen. Einige Anwendungen sind so entworfen, dass sie so viel Arbeitsspeicher verbrauchen, wie verfügbar ist. Diese Anwendungen können den physischen Arbeitsspeicher eines Servers schnell erschöpfen, wenn ihnen die Verwendung von dynamischem Arbeitsspeicher gestattet wird. In diesem Fall sollte virtuellen Computern, auf denen diese Anwendungen ausgeführt werden, eine feste Menge Arbeitsspeicher zugeteilt werden.

Schließlich kann die Leistung eines Servers beeinträchtigt werden, wenn virtuelle Computer versuchen, Arbeitsspeicher aus mehreren NUMA-Knoten zu verwenden. Wenn der Server NUMA-Arbeitsspeicher verwendet, und Leistung ein wichtiger Faktor ist, dann sollten Sie die Verwendung von dynamischem Arbeitsspeicher vermeiden.

Start-Arbeitsspeicher

Eines der wichtigsten Konzepte in Bezug auf den dynamischen Arbeitsspeicher ist der Start-Arbeitsspeicher. Bei der Verwendung von dynamischem Arbeitsspeicher müssen Sie den einzelnen virtuellen Computern einen Wert für den Start-Arbeitsspeicher zuweisen. Dieser Wert gibt die Menge an physischem Arbeitsspeicher wieder, die der virtuelle Computer beim Start anfangs verwenden wird. Noch wichtiger ist, dass der Start-Arbeitsspeicher auch die Mindestmenge an physischem Arbeitsspeicher darstellt, die der virtuelle Computer jemals verwenden wird. Der virtuelle Computer kann die Menge an genutztem Arbeitsspeicher nicht unter den Wert für den Start-Arbeitsspeicher senken.

Daher empfiehlt Microsoft die Vermeidung der Zuweisung einer großen Menge an Start-Arbeitsspeicher für virtuelle Computer. Am besten wird der Start-Arbeitsspeicher auf der Basis des Betriebssystems zugewiesen, das auf dem virtuellen Computer ausgeführt wird. Microsoft empfiehlt einen Start-Arbeitsspeicher von 512 MB für virtuelle Computer, auf denen Windows 7, Windows Vista, Windows Server 2008 und Windows Server 2008 R2 ausgeführt wird. Für virtuelle Computer, auf denen Windows Server 2003 or Windows Server 2003 R2 ausgeführt wird, empfiehlt Microsoft einen Start-Arbeitsspeicher von 128 MB.

Damit ein virtueller Computer dynamischen Arbeitsspeicher verwenden kann, muss diese Funktion durch das Betriebssystem unterstützt werden, das auf diesem virtuellen Computer ausgeführt wird. Windows XP unterstützt den dynamischer Arbeitsspeicher nicht. Wenn Sie versuchen, Windows XP auf einem virtuellen Computer auszuführen, der für die Verwendung von dynamischem Arbeitsspeicher konfiguriert wurde, kann das Betriebssystem nur auf den Start-Arbeitsspeicher zugreifen.

Bevor Sie mit anderen Konfigurationsaufgaben fortfahren, müssen Sie sicherstellen, dass die Gesamtmenge des Start-Arbeitsspeichers auf allen virtuellen Computern zusammen nicht die Menge an physischem Arbeitsspeicher überschreitet, die auf dem Server installiert ist. Andernfalls müssen Sie entweder einige virtuelle Computer entfernen oder Arbeitsspeicher hinzufügen.

Sie sollten außerdem den Höchstwert für den Arbeitsspeicher anpassen. Dieser Wert gibt die Höchstmenge an physischem Arbeitsspeicher wieder, die ein virtueller Computer verwenden kann. Per Voreinstellung legt Hyper-V die Höchstmenge an Arbeitsspeicher für die einzelnen virtuellen Computer als 64 GB fest. Sie sollten die Höchstmenge an Arbeitsspeicher auf einen niedrigeren Wert festsetzen, wenn Sie für einige der virtuellen Computer diese Menge an physischem Arbeitsspeicher nicht benötigen.

Arbeitsspeichergewichtung

Die Grundidee hinter der Verwendung von dynamischem Arbeitsspeicher besteht darin, dass Sie so mehr Arbeitsspeicher zuteilen können, als physisch vorhanden ist. So können die virtuellen Computer auf den benötigten Arbeitsspeicher zugreifen, wenn sie ihn benötigen. Der große Nachteil, wenn Sie mehr Hardwareressourcen zuteilen als vorhanden sind, besteht darin, dass Sie diese Ressourcen erschöpfen können. Im Fall des dynamischen Arbeitsspeichers ist es absolut möglich, dass die virtuellen Computer den gesamten verfügbaren physischen Arbeitsspeicher verbrauchen und immer noch Arbeitsspeicher benötigen.

Die langfristige Lösung für dieses Problem besteht darin, den Server mit ausreichend Arbeitsspeicher auszustatten, sodass er die Anforderungen der virtuellen Computer erfüllen kann. Die kurzfristige Lösung besteht jedoch in der Priorisierung der Arbeitsspeichernutzung.

Beinahe jeder Hostserver verfügt über einige virtuelle Computer, die wichtiger als andere sind. Mit Hyper-V können Sie diesen Prioritäten zuweisen, sodass im Fall fehlenden physischen Arbeitsspeichers den virtuellen Computern mit höherer Priorität zuerst Arbeitsspeicher zugeteilt wird. Sie können die Anforderungen eines virtuellen Computers in Bezug auf dynamischen Arbeitsspeicher priorisieren, indem Sie dessen Arbeitsspeicher gewichten. Virtuelle Computer mit einem höher gewichteten Arbeitsspeicher haben Vorrang gegenüber virtuellen Computern, deren Arbeitsspeicher niedriger gewichtet sind.

Die andere Einstellung, die Sie für jeden virtuellen Computer konfigurieren müssen, der dynamischen Arbeitsspeicher verwendet, ist der Arbeitsspeicherpuffer. Der Einstellung für den Arbeitsspeicherpuffer legt fest, wie viel Arbeitsspeicher die einzelnen virtuellen Computer als Puffer reservieren sollen. Dieser Wert wird als Prozentzahl ausgedrückt. Wenn ein virtueller Computer beispielsweise 4 GB an zugewiesenem Arbeitsspeicher verwendet, und der Arbeitsspeicherpuffer als 50 % festgelegt wurde, dann kann der virtuelle Computer bis zu 6 GB Arbeitsspeicher verwenden.

Der Arbeitsspeicherpuffer garantiert nicht, dass einem virtuellen Computer der Arbeitsspeicherpuffer zur Verfügung steht. Die Einstellung legt lediglich fest, wie viel Arbeitsspeicher der virtuelle Computer beanspruchen soll. Es ist wichtig zu beachten, dass sich die Menge an gepuffertem Arbeitsspeicher abhängig von der Menge an Arbeitsspeicher ändert, die aktuell von virtuellen Computer verwendet wird, da der Arbeitsspeicherpuffer als Prozentzahl ausgedrückt wird. Alle virtuellen Computer, die dynamischen Arbeitsspeicher verwenden, starten mit Verwendung nur der Mindestmenge an Arbeitsspeicher. Sie passen die Arbeitsspeichernutzung dynamisch an, basierend auf der Belastung ihres Arbeitsspeichers durch die Arbeitsauslastung.

Arbeitsspeicherkonfiguration

Der Prozess der eigentlichen Konfigurierung der Arbeitsspeicherverwendung eines virtuellen Computers ist einfach. Öffnen Sie den Hyper-V Manager, und klicken Sie mit der rechten Maustaste auf einen virtuellen Computer (da die Arbeitsspeicher der einzelnen virtuellen Computer einzeln verwaltet werden). Wählen Sie im Kontextmenü den Befehl "Einstellungen" aus. Klicken Sie auf "Arbeitsspeicher", wenn das Dialogfeld "Einstellungen" angezeigt wird.

In Hyper-V können Sie dem virtuellen Computer entweder eine feste Menge Arbeitsspeicher oder dynamischen Arbeitsspeicher zuweisen (siehe Abbildung 1). Wenn Sie den dynamischen Arbeitsspeicher auswählen, können Sie den Start-Arbeitsspeicher, die Höchstmenge an Arbeitsspeicher, den Arbeitsspeicherpuffer und die Arbeitsspeichergewichtung direkt im Dialogfeld "Einstellungen" anpassen.

You can adjust the memory allocation for a virtual machine through the Settings dialog box

Abbildung 1 Sie können die Arbeitsspeicherzuteilung für einen virtuellen Computer im Dialogfeld "Einstellungen" anpassen.

Wenn ein Hostserver nur über begrenzte physische Ressourcen für den Arbeitsspeicher verfügt, muss in der Regel ein Kompromiss zwischen der Verwendung von statischem und dynamischem Arbeitsspeicher gefunden werden. Statischer Arbeitsspeicher stellt in der Regel eine bessere Gesamtleistung bereit (vorausgesetzt, es wird ausreichend Arbeitsspeicher zugewiesen). Dynamischer Arbeitsspeicher kann etwas kompliziert sein, ermöglicht in der Regel jedoch eine höhere Dichte für virtuelle Computer.

Brien Posey

Brien Posey, MVP, ist freischaffender technischer Redakteur, der Tausende von Artikeln und Dutzende Bücher verfasst hat. Sie finden die Website von Brien Posey unter brienposey.com.

Verwandter Inhalt