收集和查看 DCGM 指标


您可以通过将 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 使用其称为 fields 的内容公开各种可观测性结构和计数器。每个字段都有一个符号标识符和一个字段编号。如需查看完整列表,请参阅 NVIDIA DCGM 字段 ID 列表

如果您在 GKE 上启用 DCGM 指标,支持的指标会自动在 Cloud Monitoring 中提供。这些指标可让您全面了解 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 集群必须满足以下要求:

限制

  • 如果您运行的是自部署的 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标包,则必须先停止收集,然后再启用托管式 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标,否则可能会出现重复或不正确的指标。

  • 托管式 DCGM 指标(包括其底层清单和容器映像)旨在仅在 GKE 集群上运行。请勿单独使用托管式 DCGM 指标,也不要在 GKE 之外运行该指标。

配置 DCGM 指标收集

您可以使用 Google Cloud 控制台、gcloud CLI 或 Terraform 让 GKE 为现有集群收集 DCGM 指标。

  1. 创建 GPU 节点池

    您必须使用默认最新版本进行安装 GPU 驱动程序

  2. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  3. 点击集群的名称。

  4. 点击 Cloud Monitoring 旁边的

  5. 选择 SYSTEMDCGM

  6. 点击“保存”。

  1. 创建 GPU 节点池

    您必须为 --gpu-driver-version 使用 defaultlatest

  2. 更新集群:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus \
        --monitoring=SYSTEM,DCGM
    

    替换以下内容:

如需使用 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 设备 UUID
  • device:GPU 设备名称。
  • gpu:节点上 GPU 设备的索引号(整数)。例如,如果有 8 个 GPU 已连接,则此值的范围为 07
  • 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

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
可用帧缓冲区(以 MB 为单位)。
DCGM_FI_DEV_FB_TOTAL
DCGM_FI_DEV_FB_TOTAL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
GPU 的总帧缓冲区(以 MB 为单位)。
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_FB_USED/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
已用帧缓冲区大小(以 MB 为单位)。
DCGM_FI_DEV_GPU_TEMP
DCGM_FI_DEV_GPU_TEMP/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
设备的当前温度读数(以摄氏度 [°C] 为单位)。
DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_GPU_UTIL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
GPU 利用率(以百分比表示)。
DCGM_FI_DEV_MEM_COPY_UTIL
DCGM_FI_DEV_MEM_COPY_UTIL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
内存利用率 (%)
DCGM_FI_DEV_MEMORY_TEMP
DCGM_FI_DEV_MEMORY_TEMP/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
设备的内存温度(以摄氏度 [°C] 为单位)。
DCGM_FI_DEV_POWER_USAGE
DCGM_FI_DEV_POWER_USAGE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
设备的耗电量(以瓦特为单位)。
DCGM_FI_DEV_SM_CLOCK
DCGM_FI_DEV_SM_CLOCK/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
SM 时钟频率(以 MHz 为单位)。
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter

CUMULATIVEDOUBLE1 prometheus_target
1.30.1-gke.1204000
自上次重新加载驱动程序以来 GPU 的总能耗(以 mJ 为单位)。
DCGM_FI_PROF_DRAM_ACTIVE
DCGM_FI_PROF_DRAM_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
设备内存接口主动发送或接收数据的周期所占的比例。
DCGM_FI_PROF_GR_ENGINE_ACTIVE
DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
图形引擎处于活跃状态的时间所占的百分比。
DCGM_FI_PROF_NVLINK_RX_BYTES
DCGM_FI_PROF_NVLINK_RX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
活跃的 NvLink 接收(读取)数据的速率(以字节为单位),包括标头和载荷。
DCGM_FI_PROF_NVLINK_TX_BYTES
DCGM_FI_PROF_NVLINK_TX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
活跃的 NvLink 发送数据的速率(以字节为单位),包括标头和载荷。
DCGM_FI_PROF_PCIE_RX_BYTES
DCGM_FI_PROF_PCIE_RX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
活跃 PCIe 接收(读取)数据的速率(以字节为单位),包括标头和载荷。
DCGM_FI_PROF_PCIE_TX_BYTES
DCGM_FI_PROF_PCIE_TX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
活跃 PCIe 发送数据的速率(以字节为单位),包括标头和载荷。
DCGM_FI_PROF_PIPE_FP16_ACTIVE
DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp16 管道处于活跃状态的周期占比。
DCGM_FI_PROF_PIPE_FP32_ACTIVE
DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp32 管道处于活跃状态的周期占比。
DCGM_FI_PROF_PIPE_FP64_ACTIVE
DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp64 管道处于活跃状态的周期占比。
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
任意张量管道处于活跃状态的周期的比例。
DCGM_FI_PROF_SM_ACTIVE
DCGM_FI_PROF_SM_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
分配了至少 1 个 warp 的 SM 的周期比例。

为了帮助您了解如何使用这些指标,我们将其分为以下几类:

计算或核心利用率

借助这些指标,您可以识别未充分利用的设备,并调整计算或 GPU 分配,以优化利用率。利用率低意味着您可能付费的 GPU 容量超出所需容量。这些指标可以通过在更少的设备上整合计算来帮助节省费用。

DCGM_FI_DEV_GPU_UTIL

此指标表示 GPU 处于活跃状态的时间所占的百分比。

预期用途:可大致了解 GPU 平均利用率。此指标类似于 DCGM_FI_PROF_GR_ENGINE_ACTIVE,可能是更准确的 GPU 利用率指标。

DCGM_FI_PROF_GR_ENGINE_ACTIVE

此指标表示对于每个采样时间间隔,图形引擎的繁忙程度。该值是根据采样时间间隔内活跃周期的平均数与可用的最大周期数得出的。例如,如果在 1 秒的采样时间间隔内,有 1,000 个周期可用,并且平均有 324 个周期处于实际活跃状态(执行工作),则生成的指标值为 0.324。这大致可以解释为 (0.324 x 100) 32.4% 的利用率。

预期用途:可大致了解 GPU 平均利用率。如果利用率值一直很高,则表示 GPU 可能是导致系统性能问题的瓶颈。如果利用率值一直很低,则表示应用未充分利用可用的处理能力。

DCGM_FI_PROF_PIPE_FP16_ACTIVEDCGM_FI_PROF_PIPE_FP32_ACTIVEDCGM_FI_PROF_PIPE_FP64_ACTIVEDCGM_FI_PROF_PIPE_TENSOR_ACTIVE

这些指标表示任何给定的 GPU 流水线处于活跃状态的周期与峰值持续运行周期的比率。

预期用途:衡量 GPU 中各种计算流水线的利用效率。

DCGM_FI_PROF_SM_ACTIVE

此指标表示 SM(流式多处理器)上至少有一个 warp 处于活跃状态的时间所占的百分比,对所有 SM 取平均值。例如,如果 GPU 有 80 个可用的 SM,并且在采样期间有 16 个 SM 在执行 warp,则生成的 sm_active 值为 (16/80) 0.20,这可以被解释为有 20% 的可用 SM 在执行 warp。

预期用途:用于衡量 GPU 并行处理机制的利用效率。

内存利用率

这些指标的主要用途是检测 GPU 设备何时没有足够的内存来运行应用。这些应用可能会从分配更多 GPU 容量中受益。

DCGM_FI_DEV_FB_FREEDCGM_FI_DEV_FB_USEDDCGM_FI_DEV_FB_TOTAL

这些指标适用于帧缓冲区内存,即 GPU 上的内存。这些指标会报告空闲内存和已用内存,两者相加即为总内存。还会报告可用内存总量。

预期用途:确定 GPU 内存使用模式。这样,您就可以将实际的 GPU 上内存用量与预期用量相关联,以确定应用的内存效率。

DCGM_FI_DEV_MEM_COPY_UTIL

此指标表示在上一个采样周期内读取或写入全局(设备)内存的时间所占的百分比。

预期用途:确定数据传入和传出 GPU 内存的模式。如果此指标的值较高,同时计算利用率指标的值较低,则可能表示内存传输是运行中应用的瓶颈。

DCGM_FI_PROF_DRAM_ACTIVE

此指标表示 GPU 内存接口发送或接收数据的周期所占的百分比。这包括在 SM 上执行的线程的加载和存储,以及对 GPU 内存的存储和从 GPU 内存的存储。值越高,表示内存流量级别就越高。

预期用途:此指标与指标 DCGM_FI_DEV_MEM_COPY_UTIL 类似,但可能更精确。

I/O 利用率

以下指标可让您深入了解 GPU 与主机之间或多个 GPU 设备之间的数据传输用量。使用这些指标的一种方法是检测应用何时对互连造成过载。由于此类传输具有固有的突发性,因此不妨探索更高分辨率的数据(例如分布),以便更精细地了解互连的行为。

DCGM_FI_PROF_NVLINK_RX_BYTESDCGM_FI_PROF_NVLINK_TX_BYTES

这些指标表示 NVLink 传输 (tx) 和接收 (rx) 吞吐量(以字节为单位)。

预期用途:用于跟踪 NVLink 连接器(GPU 芯片之间)的负载。如果这些指标的值接近可用 NVLink 带宽总和,而计算利用率指标较低,则可能表示 NVLink 是运行中应用的瓶颈。

DCGM_FI_PROF_PCIE_RX_BYTESDCGM_FI_PROF_PCIE_TX_BYTES

这些指标表示 PCIe 传输 (tx) 和接收 (rx) 吞吐量(以字节为单位),其中 tx 是 GPU 传输数据,rx 是 GPU 接收数据。

预期用途:用于跟踪 PCIe 总线(CPU 和 GPU 之间)的负载。如果这些指标的值接近 PCIe 总线的总带宽,而计算利用率指标较低,则可能表示 PCIe 总线是运行中应用的瓶颈。

电源利用率

以下指标可让您深入了解 GPU 电源利用率,这有时对工作负载的性能和效率至关重要。

DCGM_FI_DEV_GPU_TEMP

此指标表示所有 GPU 核心的平均温度。

预期用途:跟踪 GPU 何时接近过热,主要是为了与时钟节流相关联。您还可以使用此指标来识别在更高级应用中容易因负载较轻而过热的 GPU。

DCGM_FI_DEV_POWER_USAGE

此指标表示 GPU 功耗(以瓦特为单位)。您可能希望跟踪功耗作为 GPU 繁忙指标。NVIDIA GPU 会根据所执行的工作量来调整引擎时钟。随着时钟速度(以及利用率)的提高,功耗也会增加。

预期用途:跟踪 GPU 为用户应用使用的功耗。

DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION

此指标表示自上次重新加载驱动程序以来的 GPU 总能耗(以毫焦 [mJ] 为单位)。通过此指标计算出的费率应与功耗指标相对应。

预期用途:跟踪 GPU 为用户应用使用的功耗。

GPU 性能指标

GPU 性能是指 GPU 执行计算任务的有效性和效率。

DCGM_FI_DEV_MEMORY_TEMP

此指标表示内存块的平均温度。

预期用途:用于显示内存块的温度并与 GPU 温度相关联。

DCGM_FI_DEV_SM_CLOCK

此指标表示所有 SM 的平均时钟速度。此指标是针对指定时间间隔计算得出的。

预期用途:跟踪时钟速度以检测节流并与应用性能相关联。

后续步骤