Para monitorizar el uso, el rendimiento y el estado de las GPUs, puedes configurar GKE para que envíe métricas de NVIDIA Data Center GPU Manager (DCGM) a Cloud Monitoring.
Cuando habilitas las métricas de DCGM, GKE instala la herramienta DCGM-Exporter, instala controladores de GPU gestionados por Google e implementa un recurso ClusterPodMonitoring para enviar métricas a Google Cloud Managed Service para Prometheus. En los clústeres de GKE nuevos que ejecuten la versión 1.32.1-gke.1357000 o una posterior, el paquete de métricas de DCGM está habilitado de forma predeterminada. En los clústeres que ejecutan versiones anteriores, puedes habilitar la recogida de métricas de DCGM mediante la Google Cloud consola, la CLI de gcloud o Terraform.
También puedes configurar DCGM autogestionado si quieres personalizar el conjunto de métricas de DCGM o si tienes un clúster que no cumple los requisitos de las métricas de DCGM gestionadas.
¿Qué es DCGM?
NVIDIA Data Center GPU Manager (DCGM) es un conjunto de herramientas de NVIDIA que te permiten gestionar y monitorizar GPUs de NVIDIA. DCGM expone varias estructuras de observabilidad y contadores mediante lo que denomina fields
. Cada campo tiene un identificador simbólico y un número de campo.
Puedes consultar una lista completa en Lista de IDs de campos de NVIDIA DCGM.
Si habilitas las métricas de DCGM en GKE, las métricas admitidas estarán disponibles automáticamente en Cloud Monitoring. Estas métricas ofrecen una visión completa del uso, el rendimiento y el estado de la GPU.
- Las métricas de utilización de la GPU indican el nivel de actividad de la GPU monitorizada y si se utiliza de forma eficaz para procesar tareas. Esto incluye métricas de procesamiento de núcleos, memoria, E/S y uso de energía.
- Las métricas de rendimiento de la GPU hacen referencia a la eficacia y la eficiencia con las que una GPU puede llevar a cabo una tarea computacional. Esto incluye métricas de velocidad de reloj y temperatura.
- Las métricas de E/de GPU, como NVLink y PCIe, miden el ancho de banda de transferencia de datos.
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 de las métricas de NVIDIA Data Center GPU Manager (DCGM)
Para recoger métricas de NVIDIA Data Center GPU Manager (DCGM), tu clúster de GKE debe cumplir los siguientes requisitos:
- Los clústeres deben ejecutar la versión 1.30.1-gke.1204000 de GKE o una posterior.
- La recogida de métricas del sistema debe estar habilitada
- La recogida gestionada de Google Cloud Managed Service para Prometheus debe estar habilitada
- Los grupos de nodos deben ejecutar controladores de GPU gestionados por GKE. Esto significa que debes crear tus grupos de nodos con
default
olatest
para--gpu-driver-version
. - En la versión 1.32.0-gke.1764000 de GKE o versiones posteriores, se recogen métricas de creación de perfiles de todos los tipos de GPU compatibles con GKE. En versiones anteriores de GKE, las métricas de creación de perfiles solo se recogen para las GPUs NVIDIA H100 de 80 GB.
Limitaciones
Si estás ejecutando un paquete de métricas de NVIDIA Data Center GPU Manager (DCGM) autodesplegado, debes dejar de recogerlo antes de habilitar las métricas de NVIDIA Data Center GPU Manager (DCGM) gestionadas. De lo contrario, es posible que obtengas métricas duplicadas o incorrectas.
Las métricas de DCGM gestionadas, incluidos sus manifiestos y sus imágenes de contenedor subyacentes, solo funcionan en clústeres de GKE. No uses métricas de DCGM gestionadas de forma independiente ni las ejecutes fuera de GKE.
Configurar la recogida de métricas de DCGM
Puedes habilitar GKE para que recoja métricas de DCGM en un clúster que ya tengas mediante la Google Cloud consola, la CLI de gcloud o Terraform.
Consola
Crea un grupo de nodos con GPU.
Debes usar Predeterminado o Más reciente en Instalación del controlador de GPU.
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Haz clic en el nombre del clúster.
Junto a Cloud Monitoring, haz clic en edit.
Selecciona
SYSTEM
yDCGM
.Haz clic en Guardar.
gcloud
Crea un grupo de nodos de GPU.
Debes usar
default
olatest
para--gpu-driver-version
.Actualiza tu clúster:
gcloud container clusters update CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --enable-managed-prometheus \ --monitoring=SYSTEM,DCGM
Haz los cambios siguientes:
CLUSTER_NAME
: nombre del clúster.COMPUTE_LOCATION
: la ubicación de Compute Engine del clúster.
Terraform
Para configurar la recogida de métricas de DCGM mediante Terraform, consulta el bloque monitoring_config
del registro de Terraform para google_container_cluster
.
Para obtener información general sobre el uso de Google Cloud con Terraform, consulta Terraform con Google Cloud.
Usar métricas de DCGM
Puedes ver las métricas de DCGM mediante los paneles de control de laGoogle Cloud consola o directamente en las páginas de resumen y detalles del clúster. Para obtener información, consulta Ver métricas de observabilidad.
Puede ver las métricas en el panel de control de métricas de DCGM de Grafana. Para obtener más información, consulta Consultar datos con Grafana. Si se produce algún error, consulta Compatibilidad de la API.
Precios
Las métricas de DCGM usan Google Cloud Managed Service para Prometheus para cargar métricas en Cloud Monitoring. Los cargos de Cloud Monitoring por la ingestión de estas métricas se basan en el número de muestras ingeridas.
Para obtener más información, consulta los precios de Cloud Monitoring.
Cuota
Las métricas de DCGM consumen la cuota Solicitudes de ingestión de series temporales por minuto de la API de Cloud Monitoring. Antes de habilitar los paquetes de métricas, consulta el pico de uso reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te estás acercando a ese límite de cuota, puedes solicitar un aumento del límite de cuota antes de habilitar cualquiera de los paquetes de observabilidad.
Métricas de DCGM
Los nombres de métricas de Cloud Monitoring de esta tabla deben tener el prefijo prometheus.googleapis.com/
. Se ha omitido ese prefijo en las entradas de la tabla.
Además de las etiquetas del recurso monitorizado prometheus_target
, todas las métricas de DCGM recogidas en GKE tienen las siguientes etiquetas asociadas:
Etiquetas de GPU:
UUID
: el UUID del dispositivo de GPUdevice
: el nombre del dispositivo de la GPU.-
gpu
: el número de índice como un número entero del dispositivo de GPU en el nodo. Por ejemplo, si hay 8 GPUs conectadas, este valor puede oscilar entre0
y7
. modelName
: el nombre del modelo del dispositivo de la GPU, comoNVIDIA L4
.
Etiquetas de Kubernetes:
container
: el nombre del contenedor de Kubernetes que usa el dispositivo de GPU.-
namespace
: el espacio de nombres de Kubernetes del pod y el contenedor que usan el dispositivo de GPU. pod
: el pod de Kubernetes que usa el dispositivo de GPU.
Nombre de métrica de PromQL Nombre de métrica de Cloud Monitoring |
|
---|---|
Tipo, unidad
Recursos monitorizados Versión de GKE necesaria |
Descripción |
DCGM_FI_DEV_FB_FREE DCGM_FI_DEV_FB_FREE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Memoria de almacenamiento intermedio libre (MB). |
DCGM_FI_DEV_FB_TOTAL DCGM_FI_DEV_FB_TOTAL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Búfer de fotogramas total de la GPU en MB. |
DCGM_FI_DEV_FB_USED DCGM_FI_DEV_FB_USED/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Memoria de almacenamiento intermedio usada (MB). |
DCGM_FI_DEV_GPU_TEMP DCGM_FI_DEV_GPU_TEMP/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Lecturas de temperatura actuales del dispositivo (en °C). |
DCGM_FI_DEV_GPU_UTIL DCGM_FI_DEV_GPU_UTIL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Uso de la GPU (en %). |
DCGM_FI_DEV_MEM_COPY_UTIL DCGM_FI_DEV_MEM_COPY_UTIL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Uso de memoria (en %). |
DCGM_FI_DEV_MEMORY_TEMP DCGM_FI_DEV_MEMORY_TEMP/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Temperatura de la memoria del dispositivo (en °C). |
DCGM_FI_DEV_POWER_USAGE DCGM_FI_DEV_POWER_USAGE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Consumo de energía del dispositivo (en vatios). |
DCGM_FI_DEV_SM_CLOCK DCGM_FI_DEV_SM_CLOCK/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Frecuencia de reloj de SM (en MHz). |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter |
|
CUMULATIVE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Consumo total de energía de la GPU en mJ desde la última vez que se recargó el controlador. |
DCGM_FI_PROF_DRAM_ACTIVE DCGM_FI_PROF_DRAM_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
La proporción de ciclos en los que la interfaz de memoria del dispositivo está activa enviando o recibiendo datos. |
DCGM_FI_PROF_GR_ENGINE_ACTIVE DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
La proporción de tiempo que el motor gráfico está activo. |
DCGM_FI_PROF_NVLINK_RX_BYTES DCGM_FI_PROF_NVLINK_RX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Tasa de datos de lectura (rx) de NvLink activos en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_NVLINK_TX_BYTES DCGM_FI_PROF_NVLINK_TX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Tasa de datos de transmisión NvLink activos en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_PCIE_RX_BYTES DCGM_FI_PROF_PCIE_RX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Tasa de datos de recepción (lectura) de PCIe activos en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_PCIE_TX_BYTES DCGM_FI_PROF_PCIE_TX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
La tasa de datos de transmisión PCIe activos en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_PIPE_FP16_ACTIVE DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
La proporción de ciclos en los que está activa la canalización fp16. |
DCGM_FI_PROF_PIPE_FP32_ACTIVE DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
La proporción de ciclos en los que está activa la canalización fp32. |
DCGM_FI_PROF_PIPE_FP64_ACTIVE DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que está activo el canal fp64. |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
La proporción de ciclos en los que está activo cualquier tensor pipe. |
DCGM_FI_PROF_SM_ACTIVE DCGM_FI_PROF_SM_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que un SM tiene al menos un warp asignado. |
Para ayudarte a entender cómo se pueden usar estas métricas, las hemos agrupado de la siguiente manera:
Utilización de recursos de computación o de núcleos
Estas métricas te permiten identificar los dispositivos que no se utilizan lo suficiente y ajustar la asignación de computación o de GPU para optimizar el uso. Si la utilización es baja, puede que estés pagando por más capacidad de GPU de la que necesitas. Estas métricas pueden ayudar a ahorrar costes consolidando los cálculos en menos dispositivos.
DCGM_FI_DEV_GPU_UTIL
Esta métrica representa la fracción de tiempo que la GPU ha estado activa.
Uso previsto: ofrece un resumen del uso medio de la GPU. Esta métrica es similar a DCGM_FI_PROF_GR_ENGINE_ACTIVE, que podría ser una métrica más precisa para la utilización de la GPU.
DCGM_FI_PROF_GR_ENGINE_ACTIVE
Esta métrica representa la carga del motor gráfico en cada intervalo de muestreo. El valor se obtiene a partir del número medio de ciclos activos en comparación con el número máximo de ciclos disponibles durante el intervalo de muestreo. Por ejemplo, si en un intervalo de muestreo de un segundo había 1000 ciclos disponibles y una media de 324 ciclos estaban activos (realizando trabajo), el valor de la métrica resultante sería 0,324. Esto se puede interpretar como (0,324 × 100) 32,4 % de utilización.
Uso previsto: ofrece un resumen del uso medio de la GPU. Si los valores de utilización son altos de forma constante, significa que la GPU puede ser un cuello de botella que provoque problemas de rendimiento del sistema. Si los valores de utilización son bajos de forma constante, significa que la aplicación no está aprovechando al máximo la potencia de procesamiento disponible.
DCGM_FI_PROF_PIPE_FP16_ACTIVE
, DCGM_FI_PROF_PIPE_FP32_ACTIVE
,
DCGM_FI_PROF_PIPE_FP64_ACTIVE
, DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
Estas métricas representan la proporción de ciclos en los que está activa una determinada canalización de GPU con respecto a los ciclos transcurridos máximos sostenidos.
Uso previsto: mide la eficacia con la que se usan las distintas cadenas de cálculo de la GPU.
DCGM_FI_PROF_SM_ACTIVE
Esta métrica representa la fracción de tiempo en la que al menos un warp ha estado activo en un SM(multiprocesador de streaming),
promediada en todos los SMs. Por ejemplo, si la GPU tiene 80 SMs disponibles y, durante el periodo de muestreo, 16 SMs estaban ejecutando un warp, el valor sm_active
resultante sería (16/80) 0,20, lo que se puede interpretar como que el 20% de los SMs disponibles tenían un warp en ejecución.
Uso previsto: proporciona una medida de cómo se utiliza el paralelismo de la GPU.
Uso de memoria
El uso principal de estas métricas es detectar cuándo los dispositivos de GPU no tienen suficiente memoria para las aplicaciones. Estas aplicaciones podrían beneficiarse de la asignación de más capacidad de GPU.
DCGM_FI_DEV_FB_FREE
, DCGM_FI_DEV_FB_USED
, DCGM_FI_DEV_FB_TOTAL
Estas métricas corresponden a la memoria del búfer de fotogramas, que es la memoria de la GPU. Las métricas informan de la memoria libre y la memoria usada, que suman el total. También la memoria total disponible.
Uso previsto: Determina los patrones de uso de la memoria de la GPU. De esta forma, puedes correlacionar el uso real de la memoria de la GPU con el uso esperado para determinar la eficiencia de la memoria de tu aplicación.
DCGM_FI_DEV_MEM_COPY_UTIL
Esta métrica representa la fracción de tiempo del periodo de muestreo anterior durante el cual se leía o escribía la memoria global (del dispositivo).
Uso previsto: Determina los patrones de transferencia de datos hacia y desde la memoria de la GPU. Los valores altos de esta métrica, combinados con valores bajos de las métricas de utilización de recursos de computación, pueden indicar que la transferencia de memoria es el cuello de botella de las aplicaciones en ejecución.
DCGM_FI_PROF_DRAM_ACTIVE
Esta métrica representa la proporción de ciclos en los que la interfaz de memoria de la GPU envía o recibe datos. Esto incluye las cargas y los almacenamientos de los hilos que se ejecutan en los SMs, así como las copias de memoria hacia y desde la memoria de la GPU. Los valores más altos indican niveles más altos de tráfico de memoria.
Uso esperado:
Esta métrica es similar a DCGM_FI_DEV_MEM_COPY_UTIL
y podría ser más precisa.
Uso de E/S
Las siguientes métricas proporcionan información valiosa sobre el uso de la transmisión de datos entre la GPU y el host, o entre varios dispositivos de GPU. Una forma de usar esas métricas es detectar cuándo una aplicación sobrecarga la interconexión. Debido a la naturaleza de ráfaga inherente de este tipo de transmisión, puede que merezca la pena analizar datos de mayor resolución (por ejemplo, una distribución) para obtener una imagen más detallada del comportamiento de la interconexión.
DCGM_FI_PROF_NVLINK_RX_BYTES
, DCGM_FI_PROF_NVLINK_TX_BYTES
Estas métricas representan el rendimiento de transmisión (tx) y recepción (rx) de NVLink en bytes.
Uso previsto: Monitoriza la carga de los conectores NVLink (entre chips de GPU). Si los valores de estas métricas se acercan al ancho de banda total disponible de NVLink y las métricas de utilización de los recursos de computación son bajas, puede que NVLink sea un cuello de botella en las aplicaciones en ejecución.
DCGM_FI_PROF_PCIE_RX_BYTES
, DCGM_FI_PROF_PCIE_TX_BYTES
Estas métricas representan el rendimiento de transmisión (tx) y recepción (rx) de PCIe en bytes, donde tx es la GPU que transmite datos y rx es la GPU que recibe datos.
Uso previsto: Monitoriza la carga del bus PCIe (entre la CPU y la GPU). Si los valores de estas métricas se acercan al ancho de banda total del bus PCIe y las métricas de utilización de los recursos de computación son bajos, puede que el bus PCIe sea un cuello de botella en las aplicaciones en ejecución.
Uso de la energía
Las siguientes métricas proporcionan información valiosa sobre el uso de la energía de la GPU, que a veces es crucial para el rendimiento y la eficiencia de la carga de trabajo.
DCGM_FI_DEV_GPU_TEMP
Esta métrica representa la temperatura media de todos los núcleos de la GPU.
Uso previsto: Monitoriza cuándo la GPU está a punto de sobrecalentarse, sobre todo para correlacionarlo con la limitación de la frecuencia de reloj. También puedes usar esta métrica para identificar las GPUs propensas a sobrecalentarse con cargas más ligeras en aplicaciones más avanzadas.
DCGM_FI_DEV_POWER_USAGE
Esta métrica representa el consumo de energía de la GPU en vatios. Puede que quieras monitorizar el consumo de energía como métrica de ocupación de la GPU. Las GPUs de NVIDIA ajustan los relojes del motor en función del trabajo que estén realizando. A medida que aumenta la velocidad de reloj (y, por lo tanto, la utilización), también lo hace el consumo de energía.
Uso previsto: monitoriza la cantidad de energía que utiliza la GPU para las aplicaciones de los usuarios.
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
Esta métrica representa el consumo total de energía de la GPU en milijulios (mJ) después de que se volviera a cargar el controlador por última vez. La tasa calculada con esta métrica debe corresponder a la métrica de consumo de energía.
Uso previsto: monitoriza la cantidad de energía que utiliza la GPU para las aplicaciones de los usuarios.
Métricas de rendimiento de la GPU
El rendimiento de la GPU hace referencia a la eficacia y la eficiencia con las que una GPU puede llevar a cabo una tarea computacional.
DCGM_FI_DEV_MEMORY_TEMP
Esta métrica indica la temperatura media del bloque de memoria.
Uso previsto: Mostrar la temperatura del bloque de memoria y correlacionarla con la temperatura de la GPU.
DCGM_FI_DEV_SM_CLOCK
Esta métrica representa la velocidad de reloj media de todos los SMs. Esta métrica se calcula en un intervalo de tiempo especificado.
Uso previsto: Monitoriza la velocidad de reloj para detectar la limitación y correlacionarla con el rendimiento de las aplicaciones.
Siguientes pasos
- Consulta cómo ver las métricas de observabilidad.