XenServer

CPU-Auslastung überwachen

Die optimale Anzahl von vCPUs pro pCPU auf einem Host hängt von Ihrem Anwendungsfall ab. Stellen Sie im Betrieb sicher, dass Sie die Leistung Ihrer XenServer®-Umgebung überwachen und Ihre Konfiguration entsprechend anpassen.

Begriffe

In diesem Bereich gibt es verschiedene Begriffe, die manchmal synonym verwendet werden. In diesem Artikel verwenden wir die folgenden Begriffe und Bedeutungen:

  • CPU (physische CPU): Die physische Hardware, die an einen Prozessorsockel angeschlossen ist.
  • Kern: Eine physische Verarbeitungseinheit, die einen unabhängigen Ausführungsthread verarbeiten kann und alle zur Unterstützung dieser Ausführung erforderlichen Funktionseinheiten enthält.
  • Hyperthread: Eine physische Verarbeitungseinheit, die einen unabhängigen Ausführungsthread verarbeiten kann und einige Funktionseinheiten mit einem anderen Hyperthread (auch als „Sibling Thread“ bezeichnet) teilt.
  • Logische CPU (pCPU): Eine Einheit, die einen unabhängigen Ausführungsthread verarbeiten kann und einen Satz von Registern und einen Befehlszeiger enthält. In einem System mit aktivierten Hyperthreads ist dies ein Hyperthread. In anderen Fällen ist es ein Kern.
  • Host-pCPUs: Die Gesamtzahl der logischen CPUs im Host.
  • vCPU (virtuelle CPU): Eine virtualisierte logische CPU. Dies ist eine logische Einheit, die einen unabhängigen Ausführungsthread verarbeiten kann und VMs zur Verfügung gestellt wird. In XenServer können vCPUs pCPUs „zeitlich teilen“ (time-share), wobei ein Scheduler verwendet wird, um zu bestimmen, welche vCPU zu einem bestimmten Zeitpunkt auf welcher pCPU ausgeführt wird.
  • Gast-vCPUs: Die vCPUs, die einem Gastbetriebssystem innerhalb einer VM präsentiert werden.
  • Dom0-vCPUs: Die vCPUs, die für die XenServer-Kontrolldomäne (dom0) sichtbar sind.
  • Gesamt-vCPUs des Hosts: Die Summe der Dom0-vCPUs und aller Gast-vCPUs im Host.

Allgemeines Verhalten

Die Gesamtzahl der vCPUs auf einem Host ist die Summe der von dom0 verwendeten vCPUs und der Gesamtzahl der allen VMs auf dem Host zugewiesenen vCPUs. Wenn Sie die Anzahl der vCPUs auf einem Host erhöhen, können die folgenden Verhaltensweisen auftreten:

  • Wenn die Gesamtzahl der vCPUs auf dem Host kleiner oder gleich der Anzahl der pCPUs auf dem Host ist, stellt der Host den VMs immer so viel CPU zur Verfügung, wie sie anfordern.

  • Wenn die Gesamtzahl der vCPUs auf dem Host größer als die Anzahl der pCPUs auf dem Host ist, teilt der Host die Zeit der Host-pCPUs unter den VMs auf. Dieses Verhalten beeinträchtigt die VMs im Allgemeinen nicht, da ihre vCPUs normalerweise einen Teil der Zeit im Leerlauf sind und der Host in den meisten Fällen keine 100 % pCPU-Auslastung erreicht.

  • Wenn die Gesamtzahl der vCPUs auf dem Host größer als die Anzahl der pCPUs auf dem Host ist und der Host manchmal eine 100%ige Host-pCPU-Auslastung erreicht, erhalten die vCPUs der VMs während der Spitzenzeiten nicht so viel pCPU, wie sie anfordern. Stattdessen verlangsamen sich die VMs während dieser Spitzenzeiten, um einen Anteil der verfügbaren pCPU auf dem Host zu erhalten.

  • Wenn die Gesamtzahl der vCPUs auf dem Host größer als die Anzahl der pCPUs auf dem Host ist und der Host oft eine 100%ige Host-pCPU-Auslastung erreicht, werden die vCPUs der VMs kontinuierlich verlangsamt, um einen Anteil der verfügbaren CPUs auf dem Host zu erhalten. Wenn die VMs Echtzeitanforderungen haben, ist diese Situation nicht ideal, und Sie können sie beheben, indem Sie die Anzahl der vCPUs auf dem Host reduzieren.

Die optimale Anzahl von vCPUs auf einem Host kann von der Wahrnehmung der Geschwindigkeit ihrer VMs durch die VM-Benutzer abhängen, insbesondere wenn die VMs Echtzeitanforderungen haben.

Informationen zu Ihren CPUs erhalten

Um die Gesamtzahl der pCPUs auf Ihrem Host zu ermitteln, führen Sie den folgenden Befehl aus:

xe host-cpu-info --minimal

Um die Gesamtzahl der vCPUs (Gast und dom0), die sich derzeit auf Ihrem Host befinden, zu ermitteln, führen Sie den folgenden Befehl aus:

xl vcpu-list | grep -v VCPU | wc -l

CPU-Auslastung mit RRD-Metriken überwachen

XenServer stellt RRD-Metriken bereit, die beschreiben, wie die vCPUs auf Ihren VMs arbeiten.

Wenn die Host-pCPU-Auslastung 100 % beträgt

Wenn ein Host 100 % der Host-pCPU-Auslastung erreicht, verwenden Sie diese VM-Metriken, um zu entscheiden, ob die VM auf einen anderen Host verschoben werden soll:

runstate_concurrency_hazard

  • runstate_concurrency_hazard > 0% zeigt an, dass manchmal mindestens eine vCPU läuft, während mindestens eine andere vCPU laufen möchte, aber keine pCPU-Zeit erhält. Wenn die vCPUs koordiniert werden müssen, führt dieses Verhalten zu Leistungsproblemen.

  • runstate_concurrency_hazard, der sich 100 % nähert, ist eine Situation, die vermieden werden sollte.

    Vorgeschlagene Maßnahmen:

    Wenn Leistungsprobleme auftreten, führen Sie eine der folgenden Maßnahmen aus:

    • Reduzieren Sie die Anzahl der vCPUs in der VM.
    • Verschieben Sie die VM auf einen anderen Host.
    • Reduzieren Sie die Gesamtzahl der vCPUs auf dem Host, indem Sie andere VMs migrieren oder deren Anzahl an vCPUs verringern.

runstate_partial_contention

  • runstate_partial_contention > 0% bedeutet, dass mindestens eine vCPU ausgeführt werden möchte, aber keine pCPU-Zeit erhalten kann, und dass auch mindestens eine andere vCPU blockiert ist (entweder weil nichts zu tun ist oder sie auf den Abschluss von E/A wartet).

  • runstate_concurrency_hazard, der sich 100% nähert, ist eine Situation, die vermieden werden sollte.

    Vorgeschlagene Maßnahme:

    Überprüfen Sie, ob die Backend-E/A-Speicherserver überlastet sind, indem Sie die von Ihrem Speicheranbieter bereitgestellten Backend-Metriken überprüfen. Wenn die Speicherserver nicht überlastet sind und Leistungsprobleme auftreten, führen Sie eine der folgenden Maßnahmen aus:

    • Reduzieren Sie die Anzahl der vCPUs in der VM.
    • Verschieben Sie die VM auf einen anderen Host.
    • Reduzieren Sie die Gesamtzahl der vCPUs auf dem Host, indem Sie andere VMs migrieren oder deren Anzahl an vCPUs verringern.

runstate_full_contention

  • runstate_full_contention > 0% bedeutet, dass die vCPUs manchmal alle gleichzeitig ausgeführt werden möchten, aber keine pCPU-Zeit erhalten können.

  • runstate_full_contention approaching 100% ist eine zu vermeidende Situation.

    Vorgeschlagene Maßnahmen:

    Wenn Leistungsprobleme auftreten, führen Sie eine der folgenden Maßnahmen aus:

    • Reduzieren Sie die Anzahl der vCPUs in der VM.
    • Verschieben Sie die VM auf einen anderen Host.
    • Reduzieren Sie die Gesamtzahl der vCPUs auf dem Host, indem Sie andere VMs migrieren oder deren Anzahl an vCPUs reduzieren.

Wenn die pCPU-Auslastung des Hosts weniger als 100 % beträgt

Wenn ein Host nicht 100 % der pCPU-Auslastung des Hosts erreicht, verwenden Sie diese VM-Metriken, um zu entscheiden, ob eine VM die richtige Anzahl an vCPUs hat:

runstate_fullrun

  • runstate_fullrun = 0% zeigt an, dass die vCPUs niemals gleichzeitig verwendet werden.

    Vorgeschlagene Maßnahme:

    Reduzieren Sie die Anzahl der vCPUs in dieser VM.

  • 0% < runstate_fullrun < 100% zeigt an, dass die vCPUs manchmal gleichzeitig verwendet werden.

  • runstate_fullrun = 100% zeigt an, dass die vCPUs immer gleichzeitig verwendet werden.

    Vorgeschlagene Maßnahme:

    Sie können die Anzahl der vCPUs in dieser VM erhöhen, bis runstate_fullrun < 100%. Erhöhen Sie die Anzahl der vCPUs nicht weiter, andernfalls kann dies die Wahrscheinlichkeit eines Parallelitätsrisikos erhöhen, wenn der Host 100% der pCPU-Auslastung erreicht.

runstate_partial_run

  • runstate_partial_run = 0% bedeutet, dass entweder alle vCPUs immer verwendet werden (full-run=100%) oder keine vCPUs verwendet werden (idle=100%).

  • 0% < runstate_partial_run < 100% bedeutet, dass manchmal mindestens eine vCPU blockiert ist, entweder weil sie nichts zu tun haben oder weil sie auf den Abschluss von E/A-Vorgängen warten.

  • runstate_partial_run=100% bedeutet, dass immer mindestens eine vCPU blockiert ist.

    Vorgeschlagene Maßnahme:

    Prüfen Sie, ob die Back-End-E/A-Speicherserver überlastet sind. Wenn nicht, hat die VM wahrscheinlich zu viele vCPUs und Sie können die Anzahl der vCPUs in dieser VM reduzieren. Zu viele vCPUs in einer VM können das Risiko erhöhen, dass die VM in den Zustand eines Parallelitätsrisikos gerät, wenn die Host-CPU-Auslastung 100% erreicht.

CPU-Auslastung überwachen