Bevor Sie mit dem Verwalten von Arbeitsspeicherressourcen beginnen, sollte Ihnen bekannt sein, wie diese von ESXi virtualisiert und verwendet werden.

Der VMkernel verwaltet den gesamten physischen Arbeitsspeicher (RAM) auf dem Host. Einen Teil dieses verwalteten physischen Arbeitsspeichers reserviert der VMkernel für sich selbst. Der Rest steht den virtuellen Maschinen zur Verfügung.

Der virtuelle Arbeitsspeicherplatz ist in Blöcke unterteilt, die als Seiten bezeichnet werden. Wenn der physische Arbeitsspeicher voll ist, werden die Daten der virtuellen Seiten, die nicht im physischen Arbeitsspeicher aufgenommen werden können, auf Festplatte gespeichert. Je nach der Prozessorarchitektur umfassen die Seiten normalerweise 4 KB oder 2 MB. Weitere Informationen hierzu finden Sie unter Erweiterte Arbeitsspeicherattribute.

Arbeitsspeicher virtueller Maschinen

Jede virtuelle Maschine verbraucht Arbeitsspeicher auf der Grundlage der für sie konfigurierten Größe, sowie einen zusätzlichen Overhead-Arbeitsspeicher für die Virtualisierung.

Die konfigurierte Größe ist die Größe des Arbeitsspeichers, der dem Gastbetriebssystem zur Verfügung gestellt wird. Dieser Wert unterscheidet sich von dem physischen Arbeitsspeicher, der der virtuellen Maschine zugeteilt ist. Der Letztere hängt von den Ressourceneinstellungen (Anteile, Reservierung, Grenzwert) und dem Grad der Arbeitsspeicherbelastung auf dem Host ab.

Nehmen Sie eine virtuelle Maschine mit einer konfigurierten Größe von 1 GB als Beispiel. Wenn das Gastbetriebssystem startet, erkennt es, dass es auf einer dedizierten Maschine mit 1 GB an physischem Arbeitsspeicher ausgeführt wird. In einigen Fällen kann dabei der virtuellen Maschine die gesamte Größe von 1 GB zugeteilt werden. In anderen Fällen wäre die Zuteilung kleiner. Unabhängig von der aktuellen Zuteilung verhält sich das Gastbetriebssystem weiterhin, als ob es auf einer dedizierten virtuellen Maschine mit 1 GB physischem Arbeitsspeicher ausgeführt werden würde.

Anteile
Anteile legen die relative Priorität einer virtuellen Maschine fest, falls ein über die Reservierung hinausgehender Speicher verfügbar ist.
Reservierung
Die Reservierung ist eine garantierte Untergrenze für die Menge an physischem Arbeitsspeicher, die der Host für eine virtuelle Maschine reserviert, auch wenn der Arbeitsspeicher mehrfach vergeben wird. Die Reservierung sollte so festgelegt werden, dass die virtuelle Maschine über ausreichend Arbeitsspeicher verfügt, um eine effiziente Ausführung ohne übermäßiges Paging zu gewährleisten.

Nachdem eine virtuelle Maschine die zugehörige Reservierung voll ausgeschöpft hat, behält sie diese Menge an Arbeitsspeicher bei. Dieser Arbeitsspeicher wird auch dann nicht zurückgefordert, wenn sich die virtuelle Maschine im Leerlauf befindet. Einige Gastbetriebssysteme (z. B. Linux) greifen möglicherweise direkt nach dem Starten nicht auf den gesamten konfigurierten Arbeitsspeicher zu. Bis die virtuellen Maschinen die zugehörige Reservierung voll ausschöpfen, kann der VMkernel ungenutzte Anteile dieser Reservierung anderen virtuellen Maschinen zuweisen. Wenn jedoch die Arbeitslast des Gastbetriebssystems ansteigt und die virtuelle Maschine ihre Reservierung voll ausschöpft, behält sie danach diese Arbeitsspeichermenge.

Grenzwert
Ein Grenzwert ist eine obere Einschränkung der Menge an physischem Arbeitsspeicher, die der Host der virtuellen Maschine zuweisen kann. Die Arbeitsspeicherzuteilung für eine virtuelle Maschine wird zudem ausdrücklich durch die konfigurierte Größe begrenzt.

Arbeitsspeicherüberbelegung

Für jede ausgeführte virtuelle Maschine reserviert das System physischen Arbeitsspeicher (RAM), sowohl für die Reservierung der virtuellen Maschine (falls vorhanden) als auch für ihren Virtualisierungs-Overhead.

Der insgesamt konfigurierte Arbeitsspeicher von allen virtuellen Maschinen kann den auf dem Host verfügbaren physischen Arbeitsspeicher überschreiten. Dies bedeutet jedoch nicht notwendigerweise eine Überbelegung des Arbeitsspeichers. Der Arbeitsspeicher ist überbelegt, wenn der kombinierte Arbeitsspeicherbedarf von allen virtuellen Maschinen die Arbeitsspeichergröße der Hosts überschreitet.

Aufgrund der vom ESXi-Host angewendeten Verfahren für die Arbeitsspeicherverwaltung ist es jedoch möglich, dass die virtuellen Maschinen mehr virtuellen Arbeitsspeicher (RAM) nutzen, als physischer Arbeitsspeicher auf dem Host zur Verfügung steht. Wenn Sie beispielsweise über einen Host mit einem Arbeitsspeicher von 2 GB verfügen und vier virtuelle Maschinen mit einem Arbeitsspeicher von je 1 GB ausführen, ist der Arbeitsspeicher mehrfach vergeben. Wenn sich beispielsweise alle vier virtuellen Maschinen im Leerlauf befinden, kann der kombinierte belegte Arbeitsspeicher weit unter 2 GB liegen. Wenn jedoch alle virtuellen Maschinen mit 4 GB aktiv Arbeitsspeicher verbrauchen, kann der Arbeitsspeicherbedarf 2 GB überschreiten, sodass der ESXi-Host überbelegt ist.

Die Mehrfachvergabe ist deshalb sinnvoll, weil normalerweise einige virtuelle Maschinen nur wenig beansprucht werden, andere wiederum stark, und die relativen Aktivitätsstufen im Zeitverlauf variieren.

Im Hinblick auf eine verbesserte Arbeitsspeichernutzung überträgt der ESXi-Host automatisch Arbeitsspeicher von im Leerlauf befindlichen virtuellen Maschinen auf virtuelle Maschinen, die mehr Arbeitsspeicher benötigen. Verwenden Sie die Parameter für die Reservierung bzw. Anteile, um vorzugsweise wichtigen virtuellen Maschinen Arbeitsspeicher zuzuteilen. Dieser Arbeitsspeicher steht anderen virtuellen Maschinen weiterhin zur Verfügung, wenn er nicht genutzt wird. ESXi implementiert verschiedene Mechanismen wie beispielsweise Ballooning, gemeinsame Arbeitsspeichernutzung, Arbeitsspeicherkomprimierung und Arbeitsspeicherauslagerung, um eine akzeptable Leistung zu ermöglichen, selbst wenn der Arbeitsspeicher des Hosts nicht stark überbelegt ist.

Auf einem ESXi-Host kann Arbeitsspeicher fehlen, wenn virtuelle Maschinen den gesamten reservierbaren Arbeitsspeicher in einer Umgebung mit Arbeitsspeichüberbelegung verbrauchen. Die eingeschalteten virtuellen Maschinen sind davon zwar nicht betroffen, aber eine neue virtuelle Maschine kann möglicherweise nicht eingeschaltet werden, da nicht genügend Arbeitsspeicher verfügbar ist.
Hinweis: Jeder Arbeitsspeicher-Overhead von virtuellen Maschinen wird auch als reserviert betrachtet.

Zudem wird die Arbeitsspeicherkomprimierung auf ESXi-Hosts standardmäßig aktiviert, um die Leistung der virtuellen Maschinen zu verbessern, wenn der Arbeitsspeicher überbelegt ist, wie unter Arbeitsspeicherkomprimierung beschrieben.

Gemeinsame Arbeitsspeichernutzung

Die gemeinsame Arbeitsspeichernutzung ist eine proprietäre ESXi-Technik, die zu einer größeren Arbeitsspeicherdichte auf einem Host beitragen kann.

Die gemeinsame Arbeitsspeichernutzung stützt sich auf die Beobachtung, dass mehrere virtuelle Maschinen möglicherweise Instanzen des gleichen Gastbetriebssystems ausführen. Auf diesen virtuellen Maschinen können die gleichen Anwendungen oder Komponenten geladen sein, oder sie können gemeinsame Daten enthalten. In einem solchen Fall wendet der Host eine proprietäre Technik für die transparente gemeinsame Nutzung von Arbeitsspeicherseiten an, um redundante Kopien von Arbeitsspeicherseiten zu eliminieren. Durch die gemeinsame Arbeitsspeichernutzung ist der Arbeitsspeicherverbrauch durch die Arbeitslast einer virtuellen Maschine oftmals geringer als bei der Ausführung auf physischen Maschinen. Folglich kann eine höhere Überbelegung effizient unterstützt werden. Die Menge an Arbeitsspeicher, die durch die gemeinsame Arbeitsspeichernutzung gespart wird, hängt davon ab, ob die Arbeitslast aus nahezu identischen Maschinen besteht, in welchem Fall mehr Arbeitsspeicher freigegeben werden kann. Bei größeren Unterschieden bei der Arbeitslast wird möglicherweise nur ein geringerer Prozentsatz an Arbeitsspeicher eingespart.

Hinweis:

Aufgrund von Sicherheitsbedenken ist die transparente Seitenteilung zwischen virtuellen Maschinen standardmäßig deaktiviert und die Seitenteilung wird auf die gemeinsame Nutzung des Speichers innerhalb einer virtuellen Maschine beschränkt. Die gemeinsame Nutzung von Arbeitsspeicherseiten erfolgt nicht zwischen virtuellen Maschinen, sondern nur innerhalb einer virtuellen Maschine. Weitere Informationen hierzu finden Sie unter Gemeinsame Arbeitsspeichernutzung durch mehrere virtuelle Maschinen.

Speichervirtualisierung

Aufgrund der mit der Virtualisierung einhergehenden zusätzlichen Ebene der Arbeitsspeicherzuordnung kann mit ESXi eine effektive Arbeitsspeicherverwaltung für alle virtuellen Maschinen umgesetzt werden.

Ein Teil des physischen Arbeitsspeichers einer virtuellen Maschine könnte dabei gemeinsam genutzten Seiten, nicht zugeordneten Seiten oder ausgelagerten Seiten zugeordnet werden.

Ein Host führt die virtuelle Arbeitsspeicherverwaltung aus, ohne dass das Gastbetriebssystem darüber informiert ist und ohne Einfluss auf das eigene Subsystem der Arbeitsspeicherverwaltung im Gastbetriebssystem.

Der VMM der einzelnen virtuellen Maschinen übernimmt die Zuordnung der physischen Arbeitsspeicherseiten des Gastbetriebssystems zu den physischen Arbeitsspeicherseiten der zugrunde liegenden Maschine. (VMware bezeichnet die physischen Seiten des zugrunde liegenden Hosts als Maschinenseiten und die physischen Seiten des Gastbetriebssystems als physische Seiten.)

Jede virtuelle Maschine verfügt über einen zusammenhängenden, nullbasierten, adressierbaren physischen Arbeitsspeicher. Der zugrunde liegende Maschinenarbeitsspeicher des von den virtuellen Maschinen verwendeten Servers ist nicht unbedingt zusammenhängend.

Die virtuellen und physischen Gastadressen werden vom Gastbetriebssystem verwaltet. Der Hypervisor ist nur für das Übersetzen der physischen Gastadressen in Maschinenadressen zuständig. Die hardwaregestützte Arbeitsspeichervirtualisierung generiert mithilfe der Hardwarekomponente die kombinierten Zuordnungen mit den Seitentabellen des Gasts und den vom Hypervisor verwalteten verschachtelten Seitentabellen.

Das Diagramm veranschaulicht die Implementierung der Arbeitsspeichervirtualisierung bei ESXi.

Abbildung 1. Arbeitsspeicherzuordnung bei ESXi

Diese Abbildung veranschaulicht die Implementierung der Speichervirtualisierung.
  • Durch die Kästchen werden Seiten dargestellt; die Pfeile veranschaulichen die verschiedenen Arbeitsspeicherzuordnungen.
  • Die Pfeile vom virtuellen Arbeitsspeicher des Gasts zum physischen Arbeitsspeicher des Gasts zeigen die durch die Seitentabellen des Gastbetriebssystems gepflegte Zuordnung. (Die Zuordnung vom virtuellen Arbeitsspeicher zum linearen Arbeitsspeicher für Prozessoren mit x86-Architektur ist nicht dargestellt).
  • Die Pfeile vom physischen Arbeitsspeicher des Gasts zum Maschinenarbeitsspeicher stellen die durch den VMM gepflegte Zuordnung dar.
  • Die gestrichelten Pfeile zeigen die Zuordnung vom virtuellen Arbeitsspeicher des Gasts zum Maschinenarbeitsspeicher in den Schattenseitentabellen, die ebenfalls durch den VMM gepflegt werden. Der zugrunde liegende Prozessor, der die virtuelle Maschine ausführt, verwendet die Zuordnungen in der Schattenseitentabelle.

Hardwaregestützte Arbeitsspeichervirtualisierung

Einige CPUs, wie z. B. AMD SVM-V und die Intel Xeon 5500-Serie, ermöglichen durch die Verwendung von zwei Seitentabellenebenen eine Hardwareunterstützung für die Arbeitsspeichervirtualisierung.

Hinweis: In diesem Thema kann sich „Arbeitsspeicher“ auf den physischen Arbeitsspeicher oder den persistenten Speicher beziehen.

In der ersten Ebene der Seitentabellen sind die V2P-Übertragungen (Virtual-To-Physical) gespeichert, während in der zweiten Ebene die Speichertabellen die P2M-Übertragungen (Physical-To-Machine) gespeichert werden. Der TLB (Translation Look-aside Buffer) ist ein Cache für Übersetzungen, der von der MMU-Hardware des Prozessors verwaltet wird. Eine fehlgeschlagene TLB-Suche bedeutet, dass bestimmte Informationen nicht in diesem Cache vorhanden sind. In diesem Fall muss die Hardware (möglicherweise viele Male) auf den Arbeitsspeicher zugreifen, um die erforderliche Übersetzung zu finden. Wenn eine bestimmte virtuelle Gastadresse nicht im TLB vorhanden ist, werden von der Hardware beide Seitentabellen berücksichtigt, um die virtuelle Gastadresse in die Maschinenadresse zu übersetzen. Die erste Ebene von Seitentabellen wird vom Gastbetriebssystem verwaltet. Der VMM verwaltet nur die zweite Ebene von Seitentabellen.

Überlegungen zur Leistung

Wenn Sie die Hardwareunterstützung verwenden, wird dadurch der Overhead für die softwarebasierte Arbeitsspeichervirtualisierung eliminiert. Insbesondere beseitigt die Hardwareunterstützung den Overhead, der für die Synchronisierung der Schattenseitentabellen mit Gastseitentabellen benötigt wird. Die TLB-Fehlerlatenz bei Verwendung der Hardwareunterstützung ist jedoch deutlich höher. Der Hypervisor verwendet bei den hardwaregestützten Modi standardmäßig große Seiten, um die Kosten für TLB-Fehler zu senken. Ob eine Arbeitslast die Hardwareunterstützung zum Vorteil nutzen kann oder nicht, hängt demnach vom Overhead ab, der durch die Arbeitsspeichervirtualisierung bei Verwendung einer softwarebasierten Arbeitsspeichervirtualisierung verursacht wird. Wenn eine Arbeitslast eine geringe Menge an Seitentabellenaktivität umfasst (wie Prozesserstellung, Arbeitsspeicherzuordnung oder Kontext-Switches), verursacht die softwarebasierte Virtualisierung keinen erheblichen Overhead. Umgekehrt ist es wahrscheinlich, dass Arbeitslasten mit einem großen Anteil an Seitentabellenaktivität von der Hardwareunterstützung profitieren.

Der Hypervisor verwendet bei den hardwaregestützten Modi standardmäßig große Seiten, um die Kosten für TLB-Fehler zu senken. Die optimale Leistung ergibt sich bei Verwendung großer Seiten sowohl bei der Übersetzung von virtuellen in physische Gastadressen als auch bei der Übersetzung von physischen Adressen in Maschinenadressen.

Die Option LPage.LPageAlwaysTryForNPT kann die Richtlinie für die Verwendung großer Seiten bei der Übersetzung von physischen Gastadressen in Maschinenadressen ändern. Weitere Informationen finden Sie unter Erweiterte Arbeitsspeicherattribute.

Unterstützung für große Seiten

ESXi bietet nur eingeschränkte Unterstützung für große Seiten.

Die x86-Architektur ermöglicht der Systemsoftware die Verwendung von 4KB-, 2MB- und 1GB-Seiten. Wir bezeichnen 4KB-Seiten als kleine Seiten und 2MB- und 1GB-Seiten als große Seiten. Große Seiten verringern die Anforderungen an den Übersetzungs-Lookaside-Puffer (Translation Lookaside Buffer, TLB) und reduzieren den Aufwand beim Bearbeiten von Tabellen, was zu einer verbesserten Arbeitsleistung führt.

In virtuellen Umgebungen können große Seiten unabhängig vom Hypervisor und dem Gastbetriebssystem verwendet werden. Während die größten Leistungsverbesserungen erzielt werden, wenn große Seiten vom Gastbetriebssystem und dem Hypervisor verwendet werden, können in den meisten Fällen Leistungssteigerungen auch dann beobachtet werden, wenn große Seiten nur auf der Hypervisor-Ebene eingesetzt werden.

ESXi-Hypervisor verwendet standardmäßig 2MB-Seiten zum Sichern des Gast-vRAM. vSphere ESXi bietet eingeschränkte Unterstützung für das Sichern von Gast-vRAM mit 1GB-Seiten. Weitere Informationen finden Sie unter Sichern von Gast-vRAM mit 1GB-Seiten.