CPU-Leistung mit der PMU analysieren


Auf dieser Seite wird beschrieben, wie Sie die CPU-Leistung Ihrer GKE-Knoten (Google Kubernetes Engine) mithilfe von PMU-Ereignissen (Performance Monitoring Unit) analysieren.

Diese Seite richtet sich an Clusteradministratoren, die leistungsintensive Arbeitslasten haben und die CPU-Ausführung ihrer Arbeitslasten auf ihren GKE-Knoten während der Entwicklung, des Debuggens, des Benchmarking und der kontinuierlichen Überwachung untersuchen möchten.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Anforderungen und Einschränkungen

Beachten Sie beim Aktivieren von PMU-Ereignissen die folgenden Anforderungen und Einschränkungen:

  • Der Cluster muss im Standardmodus sein.
  • Wenn in Ihrem Cluster die automatische Knotenbereitstellung aktiviert ist, können für Knotenpools, die durch die automatische Bereitstellung erstellt wurden, keine PMU-Ereignisse aktiviert werden. Wenn Sie die automatische Knotenbereitstellung nach der Aktivierung von PMU-Ereignissen aktivieren, sind vorhandene Knotenpools davon nicht betroffen.
  • Auf den Knotenpools des Clusters muss der Maschinentyp C4 oder C4A ausgeführt werden.

GKE-Cluster erstellen

Erstellen Sie einen Cluster mit aktivierten PMU-Ereignissen für den Standardknotenpool:

gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --performance-monitoring-unit=PMU_LEVEL \
    --machine-type=MACHINE_TYPE

Ersetzen Sie Folgendes:

  • CLUSTER_NAME ist der Name des neuen Clusters.
  • COMPUTE_LOCATION: der Compute Engine-Standort für den neuen Cluster.
  • PMU_LEVEL: Der Typ der zu erfassenden PMU-Ereignisse. Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Funktionsweise der PMU. Unterstützte Werte:
    • architectural: Aktiviert architektonische PMU-Ereignisse, die sich auf Ereignisse ohne Cache der letzten Ebene (Last-Level Cache, LLC) beziehen.
    • standard: Enthält Architekturereignisse und ermöglicht die Verwendung von PMU-Kernereignissen, einschließlich L2-Cache-Ereignissen.
    • enhanced: Enthält Standardereignisse und ermöglicht alle lokalen Ereignisse außerhalb der CPU-Core- und LLC-PMU-Ereignisse. Diese Option ist nur für VMs mit einer bestimmten Anzahl von vCPUs verfügbar. Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Einschränkungen.
  • MACHINE_TYPE: Der Compute Engine-Maschinentyp für Ihre Knoten. Eine Liste der unterstützten Maschinentypen finden Sie in der Compute Engine-Dokumentation unter Einschränkungen.

Sie können auch einen neuen Knotenpool für einen vorhandenen Cluster mit dem Befehl gcloud container node-pools create erstellen.

Mit dem Cluster verbinden

Konfigurieren Sie kubectl für die Kommunikation mit dem Cluster:

gcloud container clusters get-credentials CLUSTER_NAME \
    --location=COMPUTE_LOCATION

Prüfen, ob die PMU aktiviert ist

Prüfen Sie anhand der Kernel-Meldungen, ob PMU für Ihre Clusterknoten aktiviert ist.

  1. Rufen Sie eine Liste der Knoten im Cluster ab:

    kubectl get nodes
    

    Die Ausgabe sieht etwa so aus:

    NAME                                  STATUS   ROLES    AGE     VERSION
    gke-c1-default-pool-44be3e13-prr1     Ready    <none>   5d23h   v1.27.13-gke.1070000
    gke-c1-default-pool-7abc4a17-9dlg     Ready    <none>   2d21h   v1.27.13-gke.1070000
    gke-c1-default-pool-ed969ef6-4gzp     Ready    <none>   5d      v1.27.13-gke.1070000
    

    Notieren Sie sich den Namen eines der Knoten.

  2. Rufen Sie den Compute Engine-Standort des Knotens ab:

    gcloud compute instances list --filter=NODE_NAME
    

    Ersetzen Sie NODE_NAME durch den Namen eines Knotens aus dem vorherigen Schritt.

    Die Ausgabe sieht etwa so aus:

    NAME                               ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    gke-c1-default-pool-44be3e13-prr1  us-central1-c  c4-standard-4     true         10.128.0.67  34.170.44.164  RUNNING
    

    Notieren Sie den Namen der Compute Engine-ZONE. In diesem Beispiel ist das us-central1-c.

  3. Stellen Sie über SSH eine Verbindung zum Clusterknoten her:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

    Ersetzen Sie COMPUTE_ZONE durch den Namen der Compute Engine-Zone aus dem vorherigen Schritt.

  4. Kernel-Meldungen prüfen:

    sudo dmesg |grep -A10 -i "Performance"
    

    Die Ausgabe sieht etwa so aus:

    [    0.307634] Performance Events: generic architected perfmon, full-
    width counters, Intel PMU driver.
    # Several lines omitted
    

    Diese Ausgabe gibt an, dass der PMU-Treiber initialisiert wurde.

Nächste Schritte