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.
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.
Das Echtzeit-Speicherauslastungsdiagramm der obersten VM in der obigen Auflistung. 4 vCPU und 64 GB RAM zugewiesen. Es liegt im Durchschnitt unter 9 GB.
Zusammenfassung der gleichen VM
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.
vCops-Bericht "Übergroße virtuelle Maschinen" ...
vCops-Grafik "Wertstoffrückgewinnung" ...
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.
quelle