Analizar el rendimiento de la CPU con la PMU


En esta página se explica cómo analizar el rendimiento de la CPU de los nodos de tu clúster de Google Kubernetes Engine (GKE) mediante eventos de la unidad de monitorización del rendimiento (PMU).

Esta página está dirigida a administradores de clústeres que tienen cargas de trabajo sensibles al rendimiento y quieren examinar la ejecución de la CPU de sus cargas de trabajo en sus nodos de GKE durante el desarrollo, la depuración, las pruebas de rendimiento y la monitorización continua.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Requisitos y limitaciones

Cuando habilite eventos de PMU, tenga en cuenta los siguientes requisitos y limitaciones:

  • El clúster debe estar en modo Estándar.
  • Si tu clúster tiene habilitado el aprovisionamiento automático de nodos, no se podrán habilitar los eventos de PMU en los grupos de nodos creados mediante el aprovisionamiento automático. Si habilitas el aprovisionamiento automático de nodos después de habilitar los eventos de PMU, los grupos de nodos que ya tengas no se verán afectados.
  • Los grupos de nodos de clúster deben ejecutar una serie de máquinas que admita PMU. Para obtener más información sobre los tipos de máquinas admitidos, consulta la tabla de limitaciones de PMU.

Crear un clúster de GKE

Crea un clúster con los eventos de PMU habilitados para el grupo de nodos predeterminado:

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

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre del nuevo clúster.
  • COMPUTE_LOCATION: la ubicación de Compute Engine del nuevo clúster.
  • PMU_LEVEL: el tipo de eventos de PMU que se van a recoger. Para obtener más información, consulta Cómo funciona la PMU en la documentación de Compute Engine. Los valores admitidos son los siguientes:
    • architectural: habilita los eventos de PMU de arquitectura relacionados con eventos de caché que no son de último nivel (LLC).
    • standard: incluye eventos de arquitectura y habilita eventos PMU principales, incluidos los eventos de caché de nivel 2.
    • enhanced: incluye eventos estándar y habilita cualquier evento local fuera de los eventos de PMU del núcleo de la CPU y de la LLC. Esta opción solo está disponible en las VMs que tienen un número específico de vCPUs. Para obtener más información, consulta la sección Limitaciones de la documentación de Compute Engine.
  • MACHINE_TYPE: el tipo de máquina de Compute Engine de tus nodos. Para ver una lista de los tipos de máquinas admitidos, consulta las limitaciones en la documentación de Compute Engine.

También puedes crear un nuevo grupo de nodos para un clúster que ya tengas con el comando gcloud container node-pools create.

Conéctate al clúster

Configura kubectl para que se comunique con el clúster:

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

Verificar que la PMU esté habilitada

Comprueba que los nodos de tu clúster tengan habilitada la PMU examinando los mensajes del kernel.

  1. Obtén una lista de los nodos del clúster:

    kubectl get nodes
    

    El resultado debería ser similar al siguiente:

    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
    

    Anota el nombre de uno de los nodos.

  2. Obtén la ubicación de Compute Engine del nodo:

    gcloud compute instances list --filter=NODE_NAME
    

    Sustituye NODE_NAME por el nombre de un nodo del paso anterior.

    El resultado debería ser similar al siguiente:

    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
    

    Anota el nombre del ZONE de Compute Engine. En este ejemplo, es us-central1-c.

  3. Usa SSH para conectarte al nodo del clúster:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

    Sustituye COMPUTE_ZONE por el nombre de la zona de Compute Engine del paso anterior.

  4. Examina los mensajes del kernel:

    sudo dmesg |grep -A10 -i "Performance"
    

    El resultado debería ser similar al siguiente:

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

    Esta salida indica que el controlador PMU se ha inicializado.

Siguientes pasos