XenServer

CPU-Auslastung überwachen

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

Begriff

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 in der Lage ist, einen unabhängigen Ausführungsthread auszuführen, der alle Funktionseinheiten enthält, die zur Unterstützung dieser Ausführung erforderlich sind.
  • Hyperthread: Eine physische Verarbeitungseinheit, die in der Lage ist, einen unabhängigen Ausführungsthread auszuführen, der einige Funktionseinheiten mit einem anderen Hyperthread teilt (auch bekannt als sein “Geschwisterthread”).
  • Logische CPU (pCPU): Eine Einheit, die einen unabhängigen Ausführungsthread ausführen kann, der eine Reihe 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 auf dem Host.
  • vCPU (Virtual CPU): Eine virtualisierte logische CPU. Dies ist eine logische Einheit, die einen unabhängigen Ausführungsthread ausführen kann und den VMs zur Verfügung gestellt wird. In XenServer können vCPUs sich pCPUs zeitweise teilen, indem sie mithilfe eines Schedulers ermitteln, welche vCPU zu einem bestimmten Zeitpunkt auf welcher pCPU läuft.
  • Gast-vCPUs: Die vCPUs, die einem Gastbetriebssystem innerhalb einer VM präsentiert werden.
  • Dom0-vCPUs: Die vCPUs, die für die XenServer-Steuerdomäne (dom0) sichtbar sind.
  • Gesamtanzahl der Host-vCPUs: Die Summe der dom0-vCPUs und aller Gast-vCPUs auf dem Host.

Allgemeines Verhalten

Die Gesamtzahl der vCPUs auf einem Host ist die Anzahl der von dom0 verwendeten vCPUs, addiert zur Gesamtzahl der vCPUs, die allen VMs auf dem Host zugewiesen sind. Wenn Sie die Anzahl der vCPUs auf einem Host erhöhen, kann das folgende Verhalten auftreten:

  • Wenn die Gesamtzahl der vCPUs auf dem Host kleiner oder gleich der Anzahl der PCPUs auf dem Host ist, stellt der Host immer so viel CPU bereit, wie von den VMs angefordert wird.

  • Wenn die Gesamtzahl der vCPUs auf dem Host größer ist als die Anzahl der PCPUs auf dem Host, teilt der Host die Zeit der Host-PCPUs mit den VMs auf. Dieses Verhalten wirkt sich im Allgemeinen nicht auf die VMs aus, da ihre vCPUs normalerweise eine gewisse Zeit im Leerlauf sind und der Host in den meisten Fällen keine 100-prozentige pCPU-Auslastung erreicht.

  • Wenn die Gesamtzahl der vCPUs auf dem Host größer ist als die Anzahl der PCPUs auf dem Host und der Host manchmal eine 100-prozentige Host-pCPU-Auslastung erreicht, erhalten die vCPUs der VMs während der Spitzenwerte nicht so viel pCPU, wie sie anfordern. Stattdessen werden die VMs während dieser Spitzen langsamer, um einen Teil der verfügbaren pCPU auf dem Host zu erhalten.

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

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

Informationen über Ihre CPUs abrufen

Führen Sie den folgenden Befehl aus, um die Gesamtzahl der PCPUs auf Ihrem Host zu ermitteln:

xe host-cpu-info --minimal

Führen Sie den folgenden Befehl aus, um die Gesamtzahl der derzeit auf Ihrem Host vorhandenen vCPUs (guest und dom0) zu ermitteln:

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

Überwachung der CPU-Auslastung mit RRD-Metriken

XenServer bietet RRD-Metriken, die beschreiben, wie die vCPUs auf Ihren VMs funktionieren.

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

Wenn ein Host 100% der pCPU-Auslastung des Hosts 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% bedeutet, dass manchmal mindestens eine vCPU läuft, während mindestens eine andere vCPU laufen möchte, aber keine pCPU-Zeit abrufen kann. Wenn die vCPUs koordiniert werden müssen, führt dieses Verhalten zu Leistungsproblemen.

  • runstate_concurrency_hazard nähert sich 100%, ist eine Situation, die es zu vermeiden gilt.

    Vorgeschlagene Maßnahmen:

    Wenn Leistungsprobleme auftreten, ergreifen Sie eine der folgenden Maßnahmen:

    • Verringern Sie die Anzahl der vCPUs in der VM.
    • Verschieben Sie die VM auf einen anderen Host.
    • Verringern 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 sowohl, dass mindestens eine vCPU ausgeführt werden möchte, aber keine pCPU-Zeit abrufen kann, als auch, dass mindestens eine andere vCPU blockiert ist (entweder weil nichts zu tun ist oder sie auf den Abschluss der I/O wartet).

  • runstate_concurrency_hazard nähert sich 100%, ist eine Situation, die es zu vermeiden gilt.

    Vorgeschlagene Maßnahme:

    Prüfen Sie, ob die Back-End-I/O-Speicherserver überlastet sind, indem Sie sich die von Ihrem Speicheranbieter bereitgestellten Backend-Metriken ansehen. Wenn die Speicherserver nicht überlastet sind und Leistungsprobleme auftreten, ergreifen Sie eine der folgenden Maßnahmen:

    • Verringern Sie die Anzahl der vCPUs in der VM.
    • Verschieben Sie die VM auf einen anderen Host.
    • Verringern 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 ausführen möchten, aber keiner kann pCPU-Zeit abrufen.

  • runstate_full_contention nähert sich 100%, ist eine Situation, die es zu vermeiden gilt.

    Vorgeschlagene Maßnahmen:

    Wenn Leistungsprobleme auftreten, ergreifen Sie eine der folgenden Maßnahmen:

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

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

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

runstate_fullrun

  • runstate_fullrun = 0% bedeutet, dass die vCPUs niemals alle gleichzeitig verwendet werden.

    Vorgeschlagene Maßnahme:

    Verringern Sie die Anzahl der vCPUs in dieser VM.

  • 0% < runstate_fullrun < 100% bedeutet, dass die vCPUs manchmal alle gleichzeitig verwendet werden.

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

    Vorgeschlagene Maßnahme:

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

runstate_partial_run

  • runstate_partial_run = 0% gibt an, dass entweder immer alle vCPUs 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 hat oder weil sie auf den Abschluss der I/O wartet.

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

    Vorgeschlagene Maßnahme:

    Überprüfen Sie, ob die Back-End-I/O-Speicherserver überlastet sind. Ist dies nicht der Fall, verfügt die VM wahrscheinlich über zu viele vCPUs, und Sie können die Anzahl der vCPUs in dieser VM verringern. Zu viele vCPUs in einer VM können das Risiko erhöhen, dass die VM in den Parallelitätszustand gerät, wenn die Host-CPU-Auslastung 100% erreicht.

CPU-Auslastung überwachen