Analizza le prestazioni della CPU utilizzando la PMU


Questa pagina mostra come analizzare le prestazioni della CPU dei nodi del cluster Google Kubernetes Engine (GKE) utilizzando gli eventi Performance Monitoring Unit (PMU).

Questa pagina è destinata agli amministratori dei cluster che hanno carichi di lavoro sensibili alle prestazioni e vogliono esaminare l'esecuzione della CPU dei loro carichi di lavoro sui nodi GKE durante lo sviluppo, il debug, il benchmarking e il monitoraggio continuo.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.

Requisiti e limitazioni

Quando attivi gli eventi PMU, tieni presente i seguenti requisiti e limitazioni:

  • Il cluster deve essere in modalità Standard.
  • Se nel cluster è abilitato il provisioning automatico dei nodi, i node pool creati tramite il provisioning automatico non possono abilitare gli eventi PMU. Se abiliti il provisioning automatico dei nodi dopo aver abilitato gli eventi PMU, i node pool esistenti non vengono interessati.
  • I node pool del cluster devono eseguire il tipo di macchina C4 o C4A.

Crea un cluster GKE

Crea un cluster con gli eventi PMU abilitati per il pool di nodi predefinito:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del nuovo cluster.
  • COMPUTE_LOCATION: la posizione di Compute Engine per il nuovo cluster.
  • PMU_LEVEL: il tipo di eventi PMU da raccogliere. Per ulteriori informazioni, consulta Come funziona la PMU nella documentazione di Compute Engine. I valori supportati sono i seguenti:
    • architectural: attiva gli eventi PMU dell'architettura correlati a eventi della cache non di ultimo livello (LLC).
    • standard: include eventi architetturali e abilita gli eventi PMU principali, inclusi gli eventi della cache L2.
    • enhanced: include gli eventi standard e attiva tutti gli eventi locali al di fuori degli eventi PMU del core della CPU e della LLC. Questa opzione è disponibile solo con le VM che hanno un numero specifico di vCPU. Per ulteriori informazioni, vedi Limitazioni nella documentazione di Compute Engine.
  • MACHINE_TYPE: il tipo di macchina Compute Engine per i tuoi nodi. Per un elenco dei tipi di macchine supportati, consulta le limitazioni nella documentazione di Compute Engine.

Puoi anche creare un nuovo pool di nodi per un cluster esistente utilizzando il comando gcloud container node-pools create.

Connettiti al cluster

Configura kubectl per comunicare con il cluster:

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

Verifica che la PMU sia abilitata

Verifica che le PMU siano abilitate sui nodi del cluster esaminando i messaggi del kernel.

  1. Recupera un elenco dei nodi nel cluster:

    kubectl get nodes
    

    L'output è simile al seguente:

    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
    

    Registra il nome di uno dei nodi.

  2. Ottieni la località Compute Engine del nodo:

    gcloud compute instances list --filter=NODE_NAME
    

    Sostituisci NODE_NAME con il nome di un nodo del passaggio precedente.

    L'output è simile al seguente:

    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
    

    Registra il nome del ZONE Compute Engine. In questo esempio, è us-central1-c.

  3. Utilizza SSH per connetterti al nodo del cluster:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

    Sostituisci COMPUTE_ZONE con il nome della zona di Compute Engine del passaggio precedente.

  4. Esamina i messaggi del kernel:

    sudo dmesg |grep -A10 -i "Performance"
    

    L'output è simile al seguente:

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

    Questo output indica che il driver PMU è inizializzato.

Passaggi successivi