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 della 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 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 attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il gcloud components update comando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

Requisiti e limitazioni

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

  • Il cluster deve essere in modalità Standard.
  • Se il cluster ha il provisioning automatico dei nodi abilitato, non è possibile abilitare gli eventi PMU per i node pool creati tramite il provisioning automatico. 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 una serie di macchine che supporta PMU. Per ulteriori informazioni sui tipi di macchine supportati, consulta Serie di macchine e piattaforme CPU supportate.

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 località di Compute Engine per il nuovo cluster.
  • PMU_LEVEL: il tipo di eventi PMU da raccogliere. Per ulteriori informazioni, consulta Come funziona PMU nella documentazione di Compute Engine. I valori supportati sono i seguenti:
    • architectural: abilita gli eventi PMU architetturali relativi agli eventi della cache non di ultimo livello (LLC).
    • standard: include gli eventi architetturali e abilita gli eventi PMU principali, inclusi gli eventi della cache L2.
    • enhanced: include gli eventi standard e abilita tutti gli eventi locali al di fuori del core della CPU e gli eventi PMU LLC. Questa opzione è disponibile solo per le VM con un numero specifico di vCPU. Per ulteriori informazioni, consulta Limitazioni nella documentazione di Compute Engine.
  • MACHINE_TYPE: il tipo di macchina Compute Engine per i nodi. Per un elenco dei tipi di macchine supportati, consulta Serie di macchine e piattaforme CPU supportate nella documentazione di Compute Engine.

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

Connettiti al cluster

Configura kubectl per comunicare con il cluster:

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

Verifica che PMU sia abilitato

Verifica che PMU sia abilitato per i 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. Recupera la località di 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 della ZONE di 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