Analisar o desempenho da CPU usando a PMU

Esta página mostra como analisar a performance da CPU dos nós de cluster do Google Kubernetes Engine (GKE) usando eventos da unidade de monitoramento de performance (PMU).

Esta página é destinada a administradores de cluster que têm cargas de trabalho sensíveis à performance e querem examinar a execução da CPU das cargas de trabalho nos nós do GKE durante o desenvolvimento, a depuração, o benchmarking e o monitoramento contínuo.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Requisitos e limitações

Ao ativar eventos de PMU, esteja ciente dos seguintes requisitos e limitações:

  • O cluster precisa estar no modo Standard.
  • Se o cluster tiver o provisionamento automático de nós ativado, nenhum pool de nós criado por provisionamento automático poderá ativar eventos de PMU. Se você ativar o provisionamento automático de nós depois de ativar eventos de PMU, os pools de nós atuais não serão afetados.
  • Os pools de nós do cluster precisam executar uma série de máquinas que ofereça suporte à PMU. Para mais informações sobre os tipos de máquinas compatíveis, consulte Séries de máquinas e plataformas de CPU compatíveis.

Criar um cluster do GKE

Crie um cluster com eventos de PMU ativados para o pool de nós padrão:

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

Substitua:

  • CLUSTER_NAME: o nome do novo cluster.
  • COMPUTE_LOCATION: o local do Compute Engine para o novo cluster.
  • PMU_LEVEL: o tipo de eventos de PMU a serem coletados. Para mais informações, consulte Como a PMU funciona na documentação do Compute Engine. Os valores aceitos são os seguintes:
    • architectural: ativa eventos de PMU arquitetônicos relacionados a eventos de cache de nível não final (LLC, na sigla em inglês).
    • standard: inclui eventos arquitetônicos e ativa eventos de PMU principais, incluindo eventos de cache L2.
    • enhanced: inclui eventos padrão e ativa eventos locais fora do núcleo da CPU e eventos de PMU LLC. Essa opção só está disponível com VMs que têm um número específico de vCPUs. Para mais informações, consulte Limitações na documentação do Compute Engine.
  • MACHINE_TYPE: o tipo de máquina do Compute Engine para seus nós. Para uma lista de tipos de máquinas compatíveis, consulte Séries de máquinas e plataformas de CPU compatíveis na documentação do Compute Engine.

Também é possível criar um novo pool de nós para um cluster atual usando o gcloud container node-pools create comando.

Conexão ao cluster

Configure kubectl para se comunicar com o cluster:

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

Verificar se a PMU está ativada

Verifique se os nós do cluster têm a PMU ativada examinando as mensagens do kernel.

  1. Confira uma lista de nós no cluster:

    kubectl get nodes
    

    O resultado será assim:

    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
    

    Registre o nome de um dos nós.

  2. Acesse o local do Compute Engine do nó:

    gcloud compute instances list --filter=NODE_NAME
    

    Substitua NODE_NAME pelo nome de um nó da etapa anterior.

    O resultado será assim:

    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
    

    Registre o nome da ZONE do Compute Engine. Neste exemplo, é us-central1-c.

  3. Use SSH para se conectar ao nó do cluster:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

    Substitua COMPUTE_ZONE pelo nome da zona do Compute Engine da etapa anterior.

  4. Examine as mensagens do kernel:

    sudo dmesg |grep -A10 -i "Performance"
    

    O resultado será assim:

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

    Essa saída indica que o driver da PMU foi inicializado.

A seguir