vSphere-Schulung - Was sind die Nachteile der Konfiguration von VMs mit * zu * viel RAM?

57

VMware Memory Management scheint ein kniffliger Balanceakt zu sein. Mit Cluster-RAM, Ressourcenpools, VMware-Verwaltungstechniken (TPS, Ballooning, Host-Swap), RAM-Auslastung im Gast, Swap, Reservierungen, Freigaben und Beschränkungen gibt es viele Variablen.

Ich bin in einer Situation, in der Clients dedizierte vSphere-Clusterressourcen verwenden. Sie konfigurieren die virtuellen Maschinen jedoch so, als befänden sie sich auf physischer Hardware. Dies bedeutet wiederum, dass ein Standard-VM-Build 4 vCPUs und mindestens 16 GB RAM aufweisen kann. Ich komme aus der Schule, wo ich klein anfange (1 vCPU, minimaler RAM), die reale Nutzung überprüfe und mich nach Bedarf anpasse. Leider verlangen viele Anbieteranforderungen und mit der Virtualisierung nicht vertraute Personen mehr Ressourcen als erforderlich. Ich bin daran interessiert, die Auswirkungen dieser Entscheidung zu quantifizieren.


Einige Beispiele aus einem "Problem" -Cluster.

Zusammenfassung des Ressourcenpools - Sieht fast 4: 1 übertrieben aus. Beachten Sie die hohe Menge an aufgeblähtem RAM. Bildbeschreibung hier eingeben

Ressourcenzuweisung - In der Spalte "Worst Case Allocation" wird angezeigt, dass diese VMs unter eingeschränkten Bedingungen auf weniger als 50% ihres konfigurierten Arbeitsspeichers zugreifen können. Bildbeschreibung hier eingeben

Das Echtzeit-Speicherauslastungsdiagramm der obersten VM in der obigen Auflistung. 4 vCPU und 64 GB RAM zugewiesen. Es liegt im Durchschnitt unter 9 GB. Bildbeschreibung hier eingeben

Zusammenfassung der gleichen VM Bildbeschreibung hier eingeben


  • Was sind die Nachteile einer Überbelegung und Überkonfiguration von Ressourcen (insbesondere RAM) in vSphere-Umgebungen?

  • Unter der Annahme, dass die VMs mit weniger RAM ausgeführt werden können, ist der Aufwand für die Konfiguration virtueller Maschinen mit mehr RAM als tatsächlich erforderlich?

  • Was ist das Gegenargument zu: "Wenn einer VM 16 GB RAM zugewiesen sind, aber nur 4 GB verwendet, was ist das Problem? " Müssen Kunden beispielsweise darauf hingewiesen werden, dass VMs nicht mit physischer Hardware identisch sind?

  • Welche spezifischen Metriken sollten verwendet werden, um die RAM-Auslastung zu messen? Verfolgen Sie die Spitzenwerte von "Aktiv" im Vergleich zur Zeit? "Verbraucht" gucken?


Update: Ich habe vCenter Operations Manager verwendet, um diese Umgebung zu profilieren und einige Details zu den oben aufgeführten Cluster-Statistiken abzurufen. Während die Dinge definitiv überlastet sind, sind die VMs tatsächlich mit unnötigem RAM so überkonfiguriert, dass der reale (winzige) Speicherbedarf auf Cluster- / Host-Ebene keine Speicherkonflikte aufweist ...

Ich gehe davon aus, dass VMs wirklich die richtige Größe mit ein wenig Puffer für Caching auf Betriebssystemebene haben sollten. Übermäßiges Festschreiben aus Unwissenheit oder aus "Lieferantenanforderungen" führt zu der hier dargestellten Situation. Die Speicherbeschleunigung scheint in jedem Fall schlecht zu sein, da sich dies auf die Leistung auswirkt. Daher kann die richtige Größenanpassung helfen, dies zu verhindern.

Update 2: Einige dieser VMs stürzen ab mit:

kernel:BUG: soft lockup - CPU#1 stuck for 71s! 

VMware beschreibt dies als Symptom für eine starke Überbelegung des Arbeitsspeichers . Ich denke, das beantwortet die Frage.

Bildbeschreibung hier eingeben


vCops-Bericht "Übergroße virtuelle Maschinen" ... Bildbeschreibung hier eingeben

vCops-Grafik "Wertstoffrückgewinnung" ...

Bildbeschreibung hier eingeben

weiß
quelle

Antworten:

45

Die Speicherverwaltung von vSphere ist recht anständig, obwohl die verwendeten Begriffe häufig viel Verwirrung stiften.

Im Allgemeinen sollte ein Speicherüberschuss vermieden werden, da dies genau diese Art von Problem verursacht. Es gibt jedoch Situationen, in denen dies nicht zu vermeiden ist. Vorgewarnt ist also gewappnet!

Was sind die Nachteile einer Überbelegung und Überkonfiguration von Ressourcen (insbesondere RAM) in vSphere-Umgebungen?

Der größte Nachteil bei der Überbeanspruchung von Ressourcen besteht darin, dass Ihre Hosts gezwungen sein sollten, im Hintergrund Daten zu sammeln, auszutauschen oder intelligent zu planen / zu duplizieren, um jeder VM den benötigten Arbeitsspeicher zuzuweisen.

Zum Aufblähen bläst vSphere einen "RAM-Ballon" in einer ausgewählten VM auf und übergibt diesen RAM-Ballon an den Gast, der ihn benötigt. Dies ist nicht wirklich "schlecht" - VMs stehlen sich gegenseitig den Arbeitsspeicher, so dass kein Plattenaustausch stattfindet. Dies kann jedoch zu Fehlalarmen und verzerrten Messwerten führen, wenn die RAM-Auslastung der VM analysiert wird, da der Arbeitsspeicher gewonnen wird wird nicht als "aufgebläht" markiert, nur dass es vom Betriebssystem "verwendet" wird.

Die andere Funktion, die vSphere verwenden kann, ist die transparente Seitenfreigabe (TPS), bei der es sich im Wesentlichen um die Deduplizierung des Arbeitsspeichers handelt. vSphere durchsucht regelmäßig den gesamten zugewiesenen Arbeitsspeicher nach doppelten Seiten. Wenn es gefunden wird, werden die duplizierten Seiten de-dupliziert und freigegeben.

Sehen Sie sich das vSphere Memory Management-Whitepaper (PDF) an - insbesondere "Speicherwiederherstellung in ESXi" (Seite 8) -, wenn Sie genauere Erläuterungen benötigen.

Unter der Annahme, dass die VMs mit weniger RAM ausgeführt werden können, muss gesagt werden, dass die Konfiguration virtueller Maschinen mit mehr RAM als erforderlich mit einem Mehraufwand verbunden ist.

Es gibt keinen sichtbaren Overhead - Sie können 100 GB RAM auf einem Host mit 16 GB zuweisen (dies bedeutet jedoch aus den oben genannten Gründen nicht, dass Sie dies tun sollten ).

Der von all Ihren VMs belegte Gesamtspeicher entspricht der in Ihren Diagrammen angezeigten "Aktiv" -Kurve. Natürlich sollten Sie sich bei der Berechnung des zu hohen Commit-Betrags niemals auf diese Zahl verlassen. Wenn Sie jedoch historische Metriken verwenden, können Sie diese anhand der tatsächlichen Nutzung analysieren und berechnen.

Der Unterschied zwischen "Active" und "Consumed" RAM wird in diesem VMWare Community-Thread erläutert .

Was ist das Gegenargument zu: "Wenn einer VM 16 GB RAM zugewiesen sind, aber nur 4 GB verwendet, was ist das Problem?" ? Müssen Kunden beispielsweise geschult werden?

Die kurze Antwort lautet: Ja. Kunden sollten unabhängig von den verfügbaren Tools stets über bewährte Methoden informiert werden.

Kunden sollten geschult werden, ihre VMs nach dem zu dimensionieren, was sie verwenden und nicht nach dem, was sie wollen . In den meisten Fällen werden die Benutzer ihre VMs übermäßig spezifizieren, nur weil sie möglicherweise 16 GB RAM benötigen, auch wenn sie in der Vergangenheit Tag für Tag 2 GB zur Verfügung haben. Als vSphere-Administrator verfügen Sie über das Wissen, die Messdaten und die Leistung, um sie herauszufordern und sie zu fragen, ob sie tatsächlich den zugewiesenen Arbeitsspeicher benötigen.

Wenn Sie jedoch die Speicherverwaltung von vSphere mit sorgfältig kontrollierten Überlastungslimits kombinieren, sollten Sie in der Praxis selten Probleme haben. Die Wahrscheinlichkeit, dass über einen längeren Zeitraum kein RAM mehr zur Verfügung steht, ist relativ gering.

Darüber hinaus ist die automatisierte vMotion ( von VMware als verteilte Ressourcenplanung bezeichnet ) im Wesentlichen ein Lastenausgleich für Ihre VMs. Wenn eine einzelne VM zu einem Ressourcenfresser wird, sollte DRS VMs migrieren, um die Ressourcen des Clusters optimal zu nutzen.

Welche spezifische Metrik sollte verwendet werden, um die RAM-Nutzung zu messen? Verfolgen Sie die Spitzenwerte von "Aktiv" im Vergleich zur Zeit?

Oben meistens behandelt - Ihr Hauptanliegen sollte die "aktive" RAM-Nutzung sein, obwohl Sie Ihre Schwellenwerte für die Überbelegung sorgfältig definieren sollten, damit Sie ein bestimmtes Verhältnis erreichen ( dies ist ein anständiges Beispiel , obwohl es möglicherweise etwas veraltet ist). Normalerweise würde ich sicherlich innerhalb von 120% des gesamten Cluster-RAM bleiben, aber es liegt an Ihnen, zu entscheiden, mit welchem ​​Verhältnis Sie sich wohl fühlen.

Ein paar gute Artikel / Diskussionen zum Thema Memory Over-Commit:

Craig Watson
quelle
Meines Wissens nach bedeutet mehr RAM für eine VM, dass die Migration der VM durch DRS schwieriger ist. Die Migration zwischen Knoten dauert länger, da das Kopieren des RAM länger dauert. und je mehr RAM benötigt wird, desto unwahrscheinlicher ist es, dass DRS in der Lage ist, einen ausreichend großen Block zu finden, der frei ist. Dies kann besonders problematisch sein (ich bin zu der Annahme gelangt), wenn ein Ereignis (z. B. ein Hardwarefehler) die Kapazität im Cluster verringert. Kleine VMs sind leicht zu mischen und es ist unwahrscheinlich, dass sie einen großen Ausfall bemerken. Große VMs können schwierig sein. Bin ich richtig informiert worden
James Polley
2
@James - Während vMotion wird nur aktiver (dh in Verwendung befindlicher) Speicher migriert. Daher spielt es keine Rolle, wie viel RAM Sie Ihren VMs zuweisen. Referenz: vmware.com/files/pdf/VMware-VMotion-DS-EN.pdf
Craig Watson
Gute Antwort. Ich habe meine Frage mit mehr Details aus diesem speziellen Cluster aktualisiert. Ihre Punkte sind jedoch gut. Es stellt sich heraus, dass die VMs in diesem Setup stark überkonfiguriert sind. Die Auslastung des aktiven Arbeitsspeichers liegt weit unter den physischen Ressourcen des Clusters, daher gibt es keine Konflikte ... Nur starkes Ballonfahren / Tauschen / Hässlichkeit. Ich vermute, dass die richtige Dimensionierung der VMs diesen Druck mindern wird.
Ewwhite
21

Neben der hervorragenden Antwort von Craig Watson möchte ich Folgendes hinzufügen:

Ein Überbelegen des Speichers in VMware sollte nicht absichtlich erfolgen. Es zeigt im Allgemeinen, dass entweder Sie oder Ihr Kunde die Hardware überzeichnet.

Wenn eine Überbeanspruchung die einzige Option ist, empfehle ich nachdrücklich, dass Sie Prioritätsregeln durchsetzen. Wenn jemand darauf aus ist, einer unkritischen VM 16 GB vRam zuzuweisen, wenn diese nur 4 GB benötigt, sollten Sie diese VM mindestens in einen Pool mit geringen Ressourcen oder mit geringer Priorität legen. Sie möchten wirklich nicht, dass eine kritische Produktionsdatenbank vom Hypervisor ausgelagert wird. Die Leistung wird nicht nur den Bach runtergehen, sondern auch die E / A-Warteschlangen Ihres Back-End-Speichers verschlingen.

Wenn Sie auf rasant schnellem Speicher (FusionIO, Violin, lokale SSDs usw.) arbeiten, ist das Auslagern möglicherweise kein großes Problem, aber mit herkömmlichem SAN-Speicher wirken Sie sich letztendlich auf jede einzelne VM und jeden Host aus, die mit demselben Array / Controller verbunden sind.

pauska
quelle
4
Gute Beobachtung der Auswirkungen des Austauschs auf die Lagerung. Dies erklärt einige der VNX-Leistungsprobleme, die ich gesehen habe ...
ewwhite
Genialer Punkt, ich hätte nie gedacht, das Storage-IO-Argument zu nehmen,
Dan