Seit einiger Zeit versuche ich herauszufinden, warum einige unserer geschäftskritischen Systeme Berichte über "Langsamkeit" erhalten, die von mild bis extrem reichen. Ich habe mich kürzlich der VMware-Umgebung zugewandt, in der alle fraglichen Server gehostet werden.
Ich habe kürzlich die Testversion für das Veeam VMware Management Pack für SCOM 2012 heruntergeladen und installiert, aber es fällt mir schwer, die Zahlen, die mir gemeldet werden, zu glauben (und mein Chef auch). Um meinen Chef davon zu überzeugen, dass die Zahlen, die er mir sagt, wahr sind, habe ich begonnen, den VMware-Client selbst zu untersuchen, um die Ergebnisse zu überprüfen.
Ich habe mir diesen VMware-KB-Artikel angesehen . speziell für die Definition von Co-Stop, die definiert ist als:
Zeitspanne, in der eine virtuelle MP-Maschine betriebsbereit war, die sich jedoch aufgrund von Konflikten mit der Ko-vCPU-Zeitplanung verzögerte
Dem übersetze ich
Das Gastbetriebssystem benötigt Zeit vom Host, muss jedoch warten, bis Ressourcen verfügbar sind, und kann daher als "nicht reagierend" eingestuft werden.
Ist diese Übersetzung korrekt?
Wenn ja, fällt es mir hier schwer zu glauben, was ich sehe: Der Host, der die Mehrheit der "langsamen" VMs enthält, zeigt derzeit einen CPU-Co-Stop-Durchschnitt von 127.835,94 Millisekunden an!
Bedeutet dies, dass die VMs auf diesem Host im Durchschnitt mindestens 2 Minuten auf die CPU-Zeit warten müssen?
Auf diesem Host befinden sich zwei 4-Core-CPUs und ein 8-CPU-Gast sowie ein 4-CPU-Gast.
quelle
Antworten:
Ich kann einige der Erfahrungen beschreiben, die ich in diesem Bereich gemacht habe ...
Ich bin nicht der Meinung, dass VMware die Kunden ( oder Administratoren ) in angemessener Weise über Best Practices aufklärt, und sie aktualisieren auch nicht frühere Best Practices, wenn sich ihre Produkte weiterentwickeln. Diese Frage ist ein Beispiel dafür, wie ein Kernkonzept wie die vCPU-Zuweisung nicht vollständig verstanden wird. Der beste Ansatz ist, mit einer einzelnen vCPU klein anzufangen, bis Sie feststellen, dass die VM mehr benötigt.
Für das OP verfügt der ESXi-Hostserver über zwei Quad-Core-CPUs, die 8 physische Kerne ergeben.
Das beschriebene Layout der virtuellen Maschine umfasst insgesamt 15 Gäste. 1 x 8 vCPU- und 14 x 4 vCPU-Systeme. Das ist viel zu überlastet, vor allem mit der Existenz eines einzelnen Gastes mit 8 vCPUs . Das macht keinen Sinn. Wenn Sie eine so große VM benötigen, benötigen Sie wahrscheinlich einen größeren Server.
Bitte versuchen Sie, die Größe Ihrer virtuellen Maschinen anzupassen. Ich bin mir ziemlich sicher, dass die meisten von ihnen mit 2 VCPU leben können. Das Hinzufügen virtueller CPUs beschleunigt die Ausführung nicht. Wenn dies also eine Lösung für ein Leistungsproblem darstellt, ist dies der falsche Ansatz.
In den meisten Umgebungen ist RAM die am stärksten eingeschränkte Ressource. Aber CPU kann ein Problem sein, wenn es zu viele Konflikte gibt. Sie haben Beweise dafür. RAM kann auch ein Problem sein, wenn einzelnen VMs zu viel zugewiesen wird .
Es ist möglich, dies zu überwachen. Die Metrik, nach der Sie suchen, lautet "CPU Ready%". Sie können dies vom Client vSphere zugreifen , indem Sie eine VM - Auswahl und gehen
Performance
>Overview
> CPU Graph.Beachten Sie die gelbe Linie in der folgenden Grafik.
Würde es Ihnen etwas ausmachen, dies auf Ihren problematischen virtuellen Maschinen zu überprüfen und eine Rückmeldung zu erhalten?
quelle
In den Kommentaren geben Sie an, dass Sie einen Dual-Quad-Core-ESXi-Host haben und eine 8vCPU-VM und vierzehn 4vCPU-VMs ausführen.
Wenn dies meine Umgebung wäre, würde ich das als stark überversorgt betrachten . Ich würde höchstens vier bis sechs 4vCPU-Gäste auf diese Hardware setzen. (Dies setzt voraus, dass die betreffenden VMs über eine Auslastung verfügen, die es erforderlich macht, dass sie eine so hohe vCPU-Anzahl aufweisen.)
Ich gehe davon aus, dass Sie die goldene Regel nicht kennen ... Mit VMware sollten Sie einer VM niemals mehr Kerne zuweisen, als sie benötigt. Grund? VMware verwendet eine strenge gemeinsame Planung, die es VMs erschwert, CPU-Zeit zu erhalten, es sei denn, es sind so viele Kerne verfügbar, wie die VM zugewiesen ist. Dies bedeutet, dass eine 4vCPU-VM nur dann 1 Arbeitseinheit ausführen kann, wenn 4 physische Kerne gleichzeitig geöffnet sind. Mit anderen Worten, es ist architektonisch besser, eine 1vCPU-VM mit 90% CPU-Auslastung zu haben, als eine 2vCPU-VM mit 45% Auslastung pro Kern.
Also ... ERSTELLEN SIE IMMER VMs mit einem Minimum an vCPUs und fügen Sie sie nur hinzu, wenn dies als notwendig erachtet wird.
Verwenden Sie für Ihre Situation Veeam, um die CPU-Auslastung Ihrer Gäste zu überwachen. Reduzieren Sie die Anzahl der vCPUs auf so viele wie möglich. Ich würde wetten, dass Sie bei fast allen Ihren vorhandenen 4vCPU-Gästen auf 2vCPU fallen könnten.
Zugegeben, wenn all diese VMs tatsächlich über die CPU-Auslastung verfügen, die für die vCPU-Anzahl erforderlich ist, müssen Sie lediglich zusätzliche Hardware kaufen.
quelle
Die 127.835,94 Millisekunden sind eine Summe, und Sie müssen durch die Abtastzeit dividieren, um die korrekten% RDY-Werte zu erhalten. Es sieht so aus, als würden Sie jetzt bereits die korrekten% RDY-Werte erhalten. Sie können mit dem Verhältnis von vCPU zu physischer CPU ziemlich viel anfangen, aber nicht so, wie Sie es tun.
Sie haben viel zu viele Quad-vCPU-VMs und sogar eine 8-vCPU-VM. Es gibt einige Qualitätsantworten, in denen bereits die richtige Dimensionierung erörtert wird, und einige Konsequenzen, wenn Zyklen nicht auf weniger vCPUs konsolidiert werden. Die eine Sache, die ich klarstellen wollte, ist, dass es zwar nicht länger der Fall ist, dass eine VM warten muss, bis die Anzahl der physischen CPUs, die der Anzahl der vCPUs entspricht, verfügbar ist, bevor Befehle verarbeitet werden können, dies ist jedoch sehr nachteilig übermäßige Bereitstellung dieser Größenordnung mit dem Verhältnis von VMs mit mehreren vCPUs zu physischen Kernen. 64 vCPUs auf 8 Kernen liegen weit über dem Maximalverhältnis von 4 zu 1. Ich nehme an, Sie haben HT auf diesen Prozessoren, also haben Sie 16 logische Kerne? Das mag bei 1 und 2 vCPU-VMs mit geringer Auslastung in Ordnung sein, aber wenn Sie eine hohe Auslastung der VMs haben, ist dies schwer zu bewerkstelligen.
Zu Ihrer Information Die HT-Prozessoren werden in den Berechnungen zur Prozessorauslastung in% nicht verwendet. Wenn also 32 logische Kerne auf einem Server mit 2,4 GHz ausgeführt werden, ist die Auslastung bei 38,4 GHz zu 100%. Wenn Sie also sehen, dass die Lastdurchschnitte mehr als 1,0 anzeigen, ist dies der Grund.
Hier ist ein ESXi-Host, auf dem ein Verhältnis von 3,5 zu 1 vCPU zu physischer CPU (einschließlich HT-Kerne) mit einem durchschnittlichen% RDY von 3% ausgeführt wird.
quelle
Seitdem haben wir Veeam ONE installiert, das einiges an Aufschluss darüber gibt, wo unsere Leistungsprobleme liegen. Durch Betrachten des Bildschirms "CPU Bottlenecks" in Veeam ONE und anschließende Fehlerbehebung bei einer virtuellen Maschine, die nicht mehr reagiert: Vergleich der CPU-Auslastung von VMM und Gast als Referenz haben wir herausgefunden, wo all unsere "inakzeptablen" Konflikte liegen.
Ein kleiner Tipp, den ich speziell teilen wollte, ist, dass ich in einem Fall die CPU-Konflikte nicht beseitigen konnte, bis ich den Snapshot entfernt habe, der sich auf der VM befand. Hoffe das hilft jemandem.
quelle