您可以通过将 GKE 配置为将 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标发送到 Cloud Monitoring,来监控 GPU 利用率、性能和健康状况。
当您启用 DCGM 指标时,GKE 会安装 DCGM-Exporter 工具、安装 Google 管理的 GPU 驱动程序,并部署 ClusterPodMonitoring 资源以将指标发送到 Google Cloud Managed Service for Prometheus。
如果您想要自定义 DCGM 指标集,或者您的集群不符合受管 DCGM 指标的要求,您还可以配置自行管理的 DCGM。
什么是 DCGM
NVIDIA 数据中心 GPU 管理器 (DCGM) 是 NVIDIA 提供的一组工具,可让您管理和监控 NVIDIA GPU。DCGM 可让您全面了解 GPU 利用率、性能和健康状况。
- GPU 利用率指标可指示所监控 GPU 的繁忙程度,以及它是否能有效用于处理任务。这包括核心处理、内存、I/O 和电源利用率的指标。
- GPU 性能指标是指 GPU 执行计算任务的有效性和效率。这包括时钟速度和温度指标。
- GPU I/O 指标(例如 NVlink 和 PCIe)用于衡量数据传输带宽。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
NVIDIA 数据中心 GPU 管理器 (DCGM) 指标的要求
如需收集 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标,GKE 集群必须满足以下要求:
- GKE 版本 1.30.1-gke.1204000 或更高版本
- 必须启用系统指标收集
- 必须启用 Google Cloud Managed Service for Prometheus 托管式收集功能
- 节点池必须运行由 GKE 管理的 GPU 驱动程序。这意味着,您必须使用
default
或latest
为--gpu-driver-version
创建节点池。 - 系统仅针对 NVIDIA H100 80GB GPU 收集性能分析指标。
配置 DCGM 指标收集
您可以使用 Google Cloud 控制台、gcloud CLI 或 Terraform 让 GKE 为现有集群收集 DCGM 指标。
控制台
-
您必须使用默认或最新版本进行安装 GPU 驱动程序。
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击集群的名称。
点击 Cloud Monitoring 旁边的 edit。
选择
SYSTEM
和DCGM
。点击“保存”。
gcloud
创建 GPU 节点池。
您必须为
--gpu-driver-version
使用default
或latest
。更新集群:
gcloud container clusters update CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --enable-managed-prometheus \ --monitoring=SYSTEM,DCGM
替换以下内容:
CLUSTER_NAME
:现有集群的名称。COMPUTE_LOCATION
:集群的 Compute Engine 位置。
Terraform
如需使用 Terraform 配置 DCGM 指标收集,请参阅 google_container_cluster
的 Terraform 注册表中的 monitoring_config
块。如需了解有关将 Google Cloud 与 Terraform 搭配使用的一般信息,请参阅将 Terraform 与 Google Cloud 搭配使用。
使用 DCGM 指标
您可以使用 Google Cloud 控制台中的控制台或直接在集群概览和集群详情页面中查看 DCGM 指标。如需了解详情,请参阅查看可观测性指标。
您可以使用 Grafana DCGM 指标信息中心查看指标。如需了解详情,请参阅使用 Grafana 查询。如果遇到任何错误,请参阅 API 兼容性。
价格
DCGM 指标使用 Google Cloud Managed Service for Prometheus 将指标加载到 Cloud Monitoring 中。Cloud Monitoring 会根据注入的样本数量收取这些指标的注入费用。但是,对于属于已启用 GKE Enterprise 版本的项目的已注册集群,这些指标是免费的。
如需了解详情,请参阅 Cloud Monitoring 价格。
配额
DCGM 指标使用 Cloud Monitoring API 的每分钟的时序注入请求数配额。在启用指标包之前,请检查该配额的最近峰值用量。如果您在同一项目中有多个集群,或者已经达到该配额上限,则可以申请增加配额,然后才能启用任一可观测性软件包。
DCGM 指标
此表中的 Cloud Monitoring 指标名称必须以 prometheus.googleapis.com/
为前缀。表中的条目已省略该前缀。
除了 prometheus_target
受监控资源上的标签之外,GKE 上收集的所有 DCGM 指标都附加了以下标签:
GPU 标签:
UUID
:GPU 设备 UUIDdevice
:GPU 设备名称。-
gpu
:节点上 GPU 设备的索引号(整数)。例如,如果有 8 个 GPU 已连接,则此值的范围为0
到7
。 modelName
:GPU 设备型号的名称,例如NVIDIA L4
。
Kubernetes 标签:
container
:使用 GPU 设备的 Kubernetes 容器的名称。-
namespace
:使用 GPU 设备的 Pod 和容器的 Kubernetes 命名空间。 pod
:使用 GPU 设备的 Kubernetes Pod。
PromQL 指标名称 Cloud Monitoring 指标名称 |
|
---|---|
种类、类型、单位 受监控的资源 所需的 GKE 版本 |
说明 |
DCGM_FI_DEV_FB_FREE DCGM_FI_DEV_FB_FREE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
可用帧缓冲区(以 MB 为单位)。 |
DCGM_FI_DEV_FB_TOTAL DCGM_FI_DEV_FB_TOTAL/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
GPU 的总帧缓冲区(以 MB 为单位)。 |
DCGM_FI_DEV_FB_USED DCGM_FI_DEV_FB_USED/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
已用帧缓冲区大小(以 MB 为单位)。 |
DCGM_FI_DEV_GPU_TEMP DCGM_FI_DEV_GPU_TEMP/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
设备的当前温度读数(以摄氏度 [°C] 为单位)。 |
DCGM_FI_DEV_GPU_UTIL DCGM_FI_DEV_GPU_UTIL/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
GPU 利用率(以百分比表示)。 |
DCGM_FI_DEV_MEM_COPY_UTIL DCGM_FI_DEV_MEM_COPY_UTIL/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
内存利用率 (%) |
DCGM_FI_DEV_MEMORY_TEMP DCGM_FI_DEV_MEMORY_TEMP/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
设备的内存温度(以摄氏度 [°C] 为单位)。 |
DCGM_FI_DEV_POWER_USAGE DCGM_FI_DEV_POWER_USAGE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
设备的耗电量(以瓦特为单位)。 |
DCGM_FI_DEV_SM_CLOCK DCGM_FI_DEV_SM_CLOCK/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
SM 时钟频率(以 MHz 为单位)。 |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter |
|
CUMULATIVE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
自上次重新加载驱动程序以来 GPU 的总能耗(以 mJ 为单位)。 |
DCGM_FI_PROF_DRAM_ACTIVE DCGM_FI_PROF_DRAM_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
设备内存接口主动发送或接收数据的周期所占的比例。 |
DCGM_FI_PROF_GR_ENGINE_ACTIVE DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
图形引擎处于活跃状态的时间所占的百分比。 |
DCGM_FI_PROF_NVLINK_RX_BYTES DCGM_FI_PROF_NVLINK_RX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
活跃的 NvLink 接收(读取)数据的速率(以字节为单位),包括标头和载荷。 |
DCGM_FI_PROF_NVLINK_TX_BYTES DCGM_FI_PROF_NVLINK_TX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
活跃的 NvLink 发送数据的速率(以字节为单位),包括标头和载荷。 |
DCGM_FI_PROF_PCIE_RX_BYTES DCGM_FI_PROF_PCIE_RX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
活跃 PCIe 接收(读取)数据的速率(以字节为单位),包括标头和载荷。 |
DCGM_FI_PROF_PCIE_TX_BYTES DCGM_FI_PROF_PCIE_TX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
活跃 PCIe 发送数据的速率(以字节为单位),包括标头和载荷。 |
DCGM_FI_PROF_PIPE_FP16_ACTIVE DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
fp16 管道处于活跃状态的周期占比。 |
DCGM_FI_PROF_PIPE_FP32_ACTIVE DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
fp32 管道处于活跃状态的周期占比。 |
DCGM_FI_PROF_PIPE_FP64_ACTIVE DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
fp64 管道处于活跃状态的周期占比。 |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
任意张量管道处于活跃状态的周期的比例。 |
DCGM_FI_PROF_SM_ACTIVE DCGM_FI_PROF_SM_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
分配了至少 1 个 warp 的 SM 的周期比例。 |
后续步骤
- 了解如何查看可观测性指标。