Analise o desempenho da CPU através da PMU


Esta página mostra como analisar o desempenho da CPU dos nós do cluster do Google Kubernetes Engine (GKE) através de eventos da Unidade de monitorização do desempenho (PMU).

Esta página destina-se a administradores de clusters que têm cargas de trabalho sensíveis ao desempenho e querem examinar a execução da CPU das respetivas cargas de trabalho nos respetivos nós do GKE durante o desenvolvimento, a depuração, os testes de referência e a monitorização contínua.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Requisitos e limitações

Quando ativa os eventos de PMU, tenha em atenção os seguintes requisitos e limitações:

  • O cluster tem de estar no modo padrão.
  • Se o cluster tiver a administração automática de nós ativada, não é possível ativar eventos de PMU em nenhum conjunto de nós criado através da administração automática. Se ativar a administração de contas automática de nós depois de ativar os eventos de PMU, os conjuntos de nós existentes não são afetados.
  • Os conjuntos de nós do cluster têm de executar uma série de máquinas que suporte a PMU. Para mais informações sobre os tipos de máquinas suportados, consulte a tabela de limitações da PMU.

Crie um cluster do GKE

Crie um cluster com eventos PMU ativados para o node pool predefinido:

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

Substitua o seguinte:

  • CLUSTER_NAME: o nome do novo cluster.
  • COMPUTE_LOCATION: a localização do Compute Engine para o novo cluster.
  • PMU_LEVEL: o tipo de eventos de PMU a recolher. Para mais informações, consulte o artigo Como funciona a PMU na documentação do Compute Engine. Os valores suportados são os seguintes:
    • architectural: ativa eventos de PMU arquitetónicos relacionados com eventos de cache de nível não final (LLC).
    • standard: inclui eventos arquitetónicos e ativa eventos PMU principais, incluindo eventos de cache L2.
    • enhanced: inclui eventos padrão e ativa quaisquer eventos locais fora do núcleo da CPU e dos eventos da PMU da LLC. Esta opção só está disponível com VMs que tenham um número específico de vCPUs. Para mais informações, consulte as Limitações na documentação do Compute Engine.
  • MACHINE_TYPE: o tipo de máquina do Compute Engine para os seus nós. Para ver uma lista dos tipos de máquinas suportados, consulte as limitações na documentação do Compute Engine.

Também pode criar um novo conjunto de nós para um cluster existente através do comando gcloud container node-pools create.

Estabeleça ligação ao cluster

Configure o kubectl para comunicar com o cluster:

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

Verifique se a PMU está ativada

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

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

    kubectl get nodes
    

    O resultado é semelhante ao seguinte:

    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
    

    Registe o nome de um dos nós.

  2. Obtenha a localização do Compute Engine do nó:

    gcloud compute instances list --filter=NODE_NAME
    

    Substitua NODE_NAME pelo nome de um nó do passo anterior.

    O resultado é semelhante ao seguinte:

    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
    

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

  3. Use o SSH para estabelecer ligação ao nó do cluster:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

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

  4. Examine as mensagens do kernel:

    sudo dmesg |grep -A10 -i "Performance"
    

    O resultado é semelhante ao seguinte:

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

    Esta saída indica que o controlador PMU está inicializado.

O que se segue?