Analisar o desempenho da CPU usando a PMU


Nesta página, mostramos como analisar o desempenho da CPU dos nós do cluster do Google Kubernetes Engine (GKE) usando eventos da unidade de monitoramento de desempenho (PMU).

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

Antes de começar

Antes de começar, veja se você realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a CLI do Google Cloud para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão mais recente executando gcloud components update.

Requisitos e limitações

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

  • O cluster precisa estar no modo padrão.
  • Se o cluster tiver o provisionamento automático de nós ativado, nenhum pool de nós criado por esse recurso poderá ativar eventos de PMU. Se você ativar o provisionamento automático de nós depois de ativar os eventos de PMU, os pools de nós atuais não serão afetados.
  • Os pools de nós do cluster precisam executar o tipo de máquina C4 ou C4A.

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:
    • architectural: ativa eventos de PMU arquitetural relacionados a eventos de cache (LLC) que não são do último nível.
    • 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 de LLC. Essa opção só está disponível para VMs com 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 os nós. Para uma lista de tipos de máquina compatíveis, consulte as limitações na documentação do Compute Engine.

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

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
    

    Anote o nome de um dos nós.

  2. Confira 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 o 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