CPU Ready: Der Silent Hypervisor Killer
CPU Ready ist etwas, mit dem Sie vielleicht nicht vertraut sind. Auf den ersten Blick klingt das vielleicht gut, aber leider nicht. CPU Ready plagt virtuelle Umgebungen länger als wir wussten, was es war. VMware definiert dies als Prozentsatz der Zeit, für die die virtuelle Maschine bereit war, konnte jedoch nicht für die Ausführung auf der physischen CPU geplant werden. Die CPU-Bereitschaftszeit hängt von der Anzahl der virtuellen Maschinen auf dem Host und deren CPU-Auslastung ab. Hyper-V hat erst kürzlich mit der Bereitstellung dieses Leistungsindikators begonnen (Hyper-V Hypervisor Virtueller Prozessor \ CPU-Wartezeit pro Dispatch), und andere Hypervisors bieten diese Kennzahl möglicherweise noch nicht an.
Um zu verstehen, was CPU Ready ist, müssen wir verstehen, wie Hypervisoren virtuelle CPUs (vCPU) auf physikalische CPUs (pCPU) einplanen. Wenn vCPU-Zeit in einer VM benötigt wird, müssen vCPUs gegen pCPU (s) geplant werden, damit die Befehle / processes / threads gegen die pCPU ausgeführt werden können. In einer idealen Welt gibt es keine Ressourcenkonflikte oder Engpässe, wenn dies passieren muss. Wenn eine einzelne vCPU-VM Zeit für eine pCPU einplanen muss, ist ein pCPU-Kern verfügbar und die CPU-Ready ist in dieser idealen Welt sehr minimal. Es ist wichtig zu beachten, dass CPU Ready immer existiert, aber in einer idealen Welt ist es sehr minimal und nicht bemerkt.
In der realen Welt ist einer der Vorteile der Virtualisierung, dass Sie darauf wetten können, dass viele Ihrer VMs nicht alle ihre vCPUs zur selben Zeit ansteuern werden. Wenn sie VMs mit sehr geringer Auslastung sind, können Sie sogar Schätzungen darüber anstellen, wie viel Sie können Laden Sie Ihren physischen Host basierend auf CPU-Auslastung und RAM-Auslastung hoch. In der Vergangenheit wurden Empfehlungen gegeben, je nach Arbeitsbelastung ein Verhältnis von 4 vCPU zu 1 pCPU oder sogar ein Verhältnis von 10: 1 zu haben. Beispielsweise verfügen Sie möglicherweise über einen einzelnen Quad-Core-Prozessor, verfügen jedoch über vier VMs mit jeweils vCPUs, um 16 vCPUs für 4 pCPUs oder 4: 1 bereitzustellen. Was Ingenieure sahen, war, dass die Umgebungen einfach schrecklich langsam waren und sie nicht herausfinden konnten warum. Die RAM-Nutzung schien in Ordnung, die CPU-Auslastung auf den physischen Hosts könnte sogar sehr niedrig sein, unter 20%. Die Speicherlatenz war extrem niedrig, dennoch waren die VMs extrem träge.
Was in diesem Szenario vor sich ging, war CPU Ready. Es gab eine Warteschlange, die sich auf der vCPU befand, die bereit war, geplant zu werden, aber keine pCPU verfügbar war, gegen die geplant werden konnte. Der Hypervisor würde die Planung verzögern und Latenz für die Gast-VM verursachen. Es ist ein stiller Killer, der bis in die letzten Jahre nicht viele Werkzeuge zu entdecken gab. In einer Windows-VM würde es ewig dauern, um zu booten, und wenn es schließlich geschieht, wenn Sie auf das Startmenü klicken, würde es ewig dauern, bis es angezeigt wird. Sie können es sogar noch einmal anklicken, weil Sie denken, dass es Ihren ersten Klick nicht akzeptiert hat und wenn es dann endlich ankommt, erhalten Sie einen Doppelklick. Unter Linux startet Ihre VM möglicherweise im schreibgeschützten Modus oder schaltet die Dateisysteme zu einem späteren Zeitpunkt sogar in den schreibgeschützten Modus um.
Wie können wir CPU Ready bekämpfen? Es gibt ein paar Wege, die helfen können. Zuerst werden die CPU-Ready-Messwerte überwacht. In VMware ist es nicht empfehlenswert, über 10% zu gehen, aber nach persönlicher Erfahrung bemerken die Benutzer mehr als 5-7%, abhängig von der Art der VM und dem, was sie ausführt.
Im Folgenden werde ich einige Beispiele aus VMware ESXi 5.5 verwenden, um CPU Ready anzuzeigen. Führen Sie über die Befehlszeile esxtop aus. Drücken Sie c für die CPU-Ansicht und Sie sollten eine Spalte % RDY für CPU Ready sehen. Sie können Großbuchstabe V für Nur-VM-Ansicht drücken.
Hier sehen Sie, dass% RDY für eine ziemlich unbenutzte Umgebung etwas hoch ist. In diesem Fall wird in meinem ESXi 5.5 eine Test-VM zusätzlich zu VMware Fusion (Mac-Hypervisor) ausgeführt, so dass es etwas anspruchsvoll ist, da wir eine VM auf einem Hypervisor auf einem anderen Hypervisor ausführen.
Im vSphere-Client können Sie die spezifische VM aufrufen und auf die Registerkarte Leistung klicken. Von dort klicken Sie auf die Diagrammoptionen
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klickenWählen Sie unter Diagrammoptionen CPU, Echtzeit (wenn Sie vCenter haben, haben Sie möglicherweise andere Zeitoptionen als Echtzeit). Wählen Sie in den Counters Bereit aus. Möglicherweise müssen Sie einen anderen Zähler deaktivieren, da die Ansicht nur zwei Datentypen gleichzeitig zulässt.
Sie werden feststellen, dass dieser Wert eine Zusammenfassung von Bereit im Vergleich zu einem Prozentsatz ist. Hier finden Sie einen Link zu einem VMware KB-Artikel, in dem erläutert wird, wie die zusammengefassten Messwerte in einen Prozentsatz konvertiert werden. - https://kb.vmware.com/kb/2002181
Beim Kauf von Hardware helfen mehr Kerne, die Auswirkungen von CPU Ready zu verringern. Hyperthreading hilft auch. Während Hyperthreading keinen vollständigen zweiten Kern für jeden primären Kern bereitstellt, reicht es in der Regel aus, die vCPU auf pCPU zu planen und das Problem zu mindern. Obwohl Hypervisoren von der vCPU- zu der pCPU-Verhältnisempfehlung zu wechseln beginnen, können Sie in einer mäßig genutzten Umgebung mit einem 4: 1 gut abschneiden und von dort aus weitermachen. Wenn Sie mit dem Laden von VMs beginnen, sollten Sie die CPU-Latenz, CPU-Ready und das Gesamtgefühl und die Leistung prüfen. Wenn Sie starke VMs haben, möchten Sie sie möglicherweise auf andere Cluster aufteilen und ein niedrigeres Verhältnis verwenden und sie hell halten. Auf der anderen Seite für VMs, bei denen Leistung nicht der Schlüssel ist und es für sie in Ordnung ist, träge zu laufen, können Sie viel höher abonnieren.
Die richtige Dimensionierung der VMs ist auch ein großes Werkzeug gegen CPU Ready. Viele Anbieter empfehlen Spezifikationen, die weit über dem liegen, was die VM tatsächlich benötigt. Traditionell mehr CPUs und mehr Kerne = mehr Power. Das Problem in einer virtuellen Umgebung besteht darin, dass der Hypervisor alle vCPUs ungefähr zur gleichen Zeit an pCPUs plant, und das Sperren der pCPUs kann problematisch sein. Wenn Sie über eine VM mit 8 vCPU verfügen, müssen Sie 8 pCPUs sperren, damit sie gleichzeitig planen können. Wenn Ihre vCPU-VM nur 10% aller vCPUs zu einem bestimmten Zeitpunkt verwendet, sollten Sie die vCPU-Anzahl auf 2 oder 4 reduzieren. Es ist besser, eine VM mit 50-80% CPU mit weniger vCPUs als 10% auszuführen mehr vCPUs. Dieses Problem liegt zum Teil daran, dass der CPU-Scheduler des Betriebssystems so viele Cores wie möglich verwendet, während er, wenn er darauf trainiert wurde, Cores vor der Verwendung von mehr zu maximieren, weniger problematisch ist. Eine übergroße VM kann eine gute Leistung erbringen, kann aber für andere VMs ein lauter Nachbar sein. Daher ist es normalerweise ein Prozess, bei dem Sie alle VMs im Cluster durchgehen müssen, um sie richtig zu dimensionieren, um Leistungsverbesserungen zu erzielen.
Viele Male sind Sie auf CPU Ready gestoßen und es ist schwierig, mit der richtigen Dimensionierung von VMs oder dem Upgrade auf Prozessoren mit mehr Kernen zu beginnen. Wenn Sie in dieser Situation sind, kann das Hinzufügen weiterer Hosts in Ihrem Cluster dazu beitragen, die Last auf mehrere Hosts zu verteilen. Wenn Sie Hosts mit mehr Cores / Prozessoren als andere Hosts haben, kann das Anhängen von hohen vCPU-VMs an diese höheren Core-Hosts ebenfalls hilfreich sein. Sie möchten sicherstellen, dass Ihr physischer Host mindestens die gleiche Anzahl an Kernen hat, wenn nicht mehr als die VM. Andernfalls ist es sehr langsam / schwierig, die Überschreitung von vCPU auf pCPU zu planen, da sie ungefähr zur gleichen Zeit gesperrt werden müssen .
Schließlich kann Ihr Hypervisor Reservierungen und Beschränkungen für die VM unterstützen. Manchmal werden Thesen versehentlich gesetzt. Aggressive Einstellungen an diesen können CPU Ready verursachen, wenn tatsächlich die zugrunde liegenden Ressourcen dafür verfügbar sind. Es ist in der Regel am besten, Reservierungen und Limits sparsam und nur bei Bedarf zu verwenden. In den meisten Fällen wird ein Cluster in geeigneter Größe Ressourcen angemessen ausgleichen, und diese werden normalerweise nicht benötigt.
Zusammenfassend ist die beste Verteidigung gegen CPU Ready das Wissen, dass es existiert und wie man es überprüft. Sie können dann systematisch die besten Abschwächungsschritte für Ihre Umgebung unter Berücksichtigung der obigen Punkte bestimmen. Die Informationen in diesem Artikel gelten größtenteils für jeden Hypervisor, obwohl die Screenshots und Diagramme speziell für VMware gelten.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken