TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

DCGM exporter 指标全解:实际输出的 18 个与未输出的指标

状态:草案(2026-10-05,2026-10-09 更新),已反映实测结果。 指标列表、数值、标签和日志均从实验环境的 dcgm-exporter 中只读获取。对指标含义的补充说明基于 NVIDIA DCGM 和 dcgm-exporter 文档,撰写本文时未重新打开文档进行核对(未确认)。未执行 PromQL 示例(未执行)。编写规则:以实测数据为基础,未测出的内容标记为“未实测”。

目录

1. 架构与实验环境配置

DCGM(Data Center GPU Manager)是 NVIDIA 的 GPU 管理与监控库,而 dcgm-exporter 是将 DCGM 读取的值以 Prometheus 格式导出的程序。其数据流向为:“GPU 驱动 (NVML) → DCGM → dcgm-exporter (HTTP 9400) → Prometheus”。

实验环境配置如下。

项目 值
镜像 nvcr.io/nvidia/k8s/dcgm-exporter:4.5.3-4.8.2-distroless
部署方式 GPU Operator 的 DaemonSet
服务 nvidia-dcgm-exporter ClusterIP,端口 9400
采集列表 环境变量 DCGM_EXPORTER_COLLECTORS=/etc/dcgm-exporter/dcp-metrics-included.csv
Kubernetes 集成 DCGM_EXPORTER_KUBERNETES=true

2. 实际输出的 18 个指标

在一款 8GB 级笔记本 GPU 的 54 行输出中包含了 18 个指标,同一代次的其他笔记本 GPU 也输出了相同的 18 个指标。下表中的数值是该 GPU 处于空闲状态时的示例值。其含义基于指标的 HELP 文本和 DCGM 文档。

2.1 时钟、温度、功耗

指标 类型 单位 含义 示例值
DCGM_FI_DEV_SM_CLOCK gauge MHz SM(流式多处理器)时钟 210
DCGM_FI_DEV_MEM_CLOCK gauge MHz 显存时钟 8001
DCGM_FI_DEV_GPU_TEMP gauge ℃ GPU 温度 40
DCGM_FI_DEV_MEMORY_TEMP gauge ℃ 显存温度 0
DCGM_FI_DEV_POWER_USAGE gauge W 瞬时功耗 1.22
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION counter mJ 开机后的累计能耗 8,447,476,600

2.2 利用率

指标 类型 单位 含义 示例值
DCGM_FI_DEV_GPU_UTIL gauge % 在采样周期内至少有一个内核处于运行状态的时间比例 0
DCGM_FI_DEV_MEM_COPY_UTIL gauge % 内存控制器用于读写操作的时间比例 0
DCGM_FI_DEV_ENC_UTIL gauge % 视频编码器利用率 0
DCGM_FI_DEV_DEC_UTIL gauge % 视频解码器利用率 0

GPU_UTIL 最大的一大陷阱是其名称给人带来的直观印象。 该值并不是指“SM 的饱和程度”,而是指“至少有一个内核在运行的时间比例”(根据文档标准)。如果一个小型内核持续运行,即使大部分 SM 处于空闲状态,该值也会达到 100%。因此,仅凭该值无法得知 LLM 推理服务中的 GPU 是否真正饱和。正如第 5 节所示,此实验环境中的 GPU 无法获取更准确的指标(性能分析)。

2.3 内存

指标 单位 含义 示例值(8GB 级笔记本 GPU)
DCGM_FI_DEV_FB_USED MiB 正在使用的帧缓冲区 12
DCGM_FI_DEV_FB_FREE MiB 空闲的帧缓冲区 7,795
DCGM_FI_DEV_FB_RESERVED MiB 驱动程序预留的区域 380

将这三个值相加即为 GPU 的总内存。 上述示例中为 12 + 7,795 + 380 = 8,187MiB,同级别的其他显卡为 8,186MiB,24GB 级消费级 GPU 则为 24,575MiB,分别符合 8GiB 级和 24GiB 级显卡。因此,在计算利用率时,分母应使用 USED + FREE 而不是 USED + FREE + RESERVED 这样才准确。预留区域是模型无法使用的空间。

2.4 错误与可靠性

指标 类型 含义 值
DCGM_FI_DEV_PCIE_REPLAY_COUNTER counter PCIe 重传累计次数 0
DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS counter 因不可纠正错误而重新映射的内存行数 0
DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS counter 因可纠正错误而重新映射的内存行数 0
DCGM_FI_DEV_ROW_REMAP_FAILURE gauge 行重新映射是否失败(0 为正常) 0
DCGM_FI_DEV_VGPU_LICENSE_STATUS gauge vGPU 许可状态 0

3. 标签

所有指标都附加了相同的标签。

标签 值示例 用途
gpu 0 节点内的 GPU 编号
UUID GPU-… 永久区分 GPU(追踪更换情况)
pci_bus_id 00000000:01:00.0 物理位置
device nvidia0 设备节点
modelName GPU 模型名称 模型
Hostname 节点名称 节点
DCGM_FI_DRIVER_VERSION 595.91.07 驱动版本

如果有正在使用 GPU 的 Pod,则会添加 container, namespace, pod 标签。已确认在拥有使用 GPU 的 Pod 的 GPU 上附加了这三个标签。这三项内容从 kubelet 的 pod-resources 套接字获取,如果 GPU 为空闲状态,则不会附加。

若要附加 Pod 的自定义标签,导出器需要具有读取 API Server 的权限。 在实验环境中,导出器无法在集群内部访问 API Server,并且日志中留下了 Failed to get in-cluster config, pod labels will not be available 。这意味着若要按团队或项目统计 Pod 标签对应的成本,必须授予导出器读取 API Server 的权限,但我并未进行此类更改(未测试)。

标签值的种类与 GPU 数量成正比,因此该指标的基数(Cardinality)较小。这与下一篇文章(Cilium 指标)中的 Hubble 形成了对比。

4. 通过标签揭示的差异与观察

5. 未输出的指标及其原因

导出器的启动日志中直接保留了原因(8GB 级笔记本 GPU,2026-09-23)。

Not collecting DCP metrics: Profiling is not supported for this group of GPUs or GPU
Skipping line 21 ('DCGM_FI_PROF_GR_ENGINE_ACTIVE'): metric not enabled
Skipping line 22 ('DCGM_FI_PROF_PIPE_TENSOR_ACTIVE'): metric not enabled
Skipping line 23 ('DCGM_FI_PROF_DRAM_ACTIVE'): metric not enabled
Skipping line 24 ('DCGM_FI_PROF_PCIE_TX_BYTES'): metric not enabled
Skipping line 25 ('DCGM_FI_PROF_PCIE_RX_BYTES'): metric not enabled
Not collecting NvSwitch metrics; no switches to monitor
Not collecting CPU metrics; ... DCGM module that is not currently loaded
缺失指标 含义 在此环境中缺失的原因
DCGM_FI_PROF_GR_ENGINE_ACTIVE 图形引擎处于活动状态的时间比例 此 GPU 系列不支持性能分析(日志)
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE 张量核心处于活动状态的比例 同上
DCGM_FI_PROF_DRAM_ACTIVE 内存接口处于活动状态的比例 同上
DCGM_FI_PROF_PCIE_TX/RX_BYTES PCIe 收发字节数 同上
NVSwitch、NVLink 指标 交换机与链路状态 无交换机(日志)
主机 CPU 指标 CPU 核心状态 未加载 DCGM 模块(日志)

在 LLM 推理服务运维中最令人遗憾的是性能分析(Profiling)指标。 必须了解张量核心活动比例和 DRAM 活动比例,才能区分“到底是计算成为瓶颈,还是内存带宽成为瓶颈”,但在这些消费级笔记本 GPU 上无法获取这些指标。2026-10-09,我连同桌面端 24GB 级 GPU 一起重新进行了确认。仅通过 API 代理读取了集群中五张 GPU(四种型号:两代笔记本 GPU 和一张桌面端 GPU)的收集器输出,结果发现以 DCGM_FI_PROF_ 开头的行在全部五张卡上都是 0 个。并不是说桌面端 GPU 就一定会输出。指标的种类也不尽相同。最新一代笔记本 GPU 有 18 种,上一代的笔记本和桌面端 GPU 有 15 种,缺少的三个是行重映射指标(DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS, ..._UNCORRECTABLE_REMAPPED_ROWS, DCGM_FI_DEV_ROW_REMAP_FAILURE)。NVIDIA 文档针对消费级、工作站级等非数据中心 GPU 仅标注了“limited DCGM functionality”,且功能表(Features Supported on Different GPU Products)中也没有性能分析这一行,因此无法从文档中区分究竟哪些产品会输出该指标。至于数据中心 GPU 是否真的会输出,由于没有设备,仍然是 未实测 。

XID 错误指标以及功耗与温度超限违规指标不在此输出中。 日志的跳过列表中也没有。起初推测所使用的收集列表中原本就没有 XID,但通过外部资料确认该推测是错误的。此 Pod 的配置是 DCGM_EXPORTER_COLLECTORS=/etc/dcgm-exporter/dcp-metrics-included.csv,镜像标签是 4.5.3-4.8.2-distroless ,而在上游仓库的同标签文件中(原文已确认), DCGM_FI_DEV_XID_ERRORS 作为活动行(去除注释后的序号 11)被包含在内。同一文件中的五个 PROF 行与日志中的从“Skipping line 21”到“line 25”完全重合,我们看到的 18 个指标正好等于该文件活动 26 行减去 XID、NVLink 带宽以及五个 PROF 行。因此, 它似乎存在于列表中,但在此 GPU 上没有输出对应的值(推测。如果 DCGM 返回空值,导出器源码会跳过该指标。未能打开运行中的文件查看(distroless),目前 DCGM_FI_DEV_XID_ERRORS 系列行为 0 个)。功耗与温度超限违规指标在上游文件中被注释掉了,因此原本就不在列表中。目前只能通过内核日志(NVRM: Xid)来确认 XID,该流程将在第 11 篇中继续探讨。

6. 查询示例(未执行)

这是未在实际 Prometheus 中执行的示例。指标名称和单位已与上述实测保持一致。

# 평균 전력(W): 누적 에너지(mJ)의 증가율을 1000 으로 나눈다
rate(DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION[5m]) / 1000

# 메모리 사용률: 분모에 예약 영역까지 포함한다
DCGM_FI_DEV_FB_USED / (DCGM_FI_DEV_FB_USED + DCGM_FI_DEV_FB_FREE + DCGM_FI_DEV_FB_RESERVED)

# 알림 후보
DCGM_FI_DEV_ROW_REMAP_FAILURE > 0
increase(DCGM_FI_DEV_PCIE_REPLAY_COUNTER[1h]) > 0

7. 面试可能遇到的问题

8. 常见误解

外部依据:通过官方文档和源码确认的内容

主题 资料与确认位置 确认的内容 与本文的关系
无法获取性能剖析(Profiling)指标的原因 DCGM Feature Overview(支持的产品表)、dcgm-exporter default-counters.csv 注释与源码(pkg/cmd/app.go, fieldIsSupported) 性能剖析指标仅在数据中心级 Volta 及以上架构中支持。exporter 在启动时会向 DCGM 查询是否支持性能剖析,如果失败则会记录「Not collecting DCP metrics」,并将 PROF 行标记为「metric not enabled」后跳过 支持。 与本文看到的日志措辞一致
消费级 GPU 的 DCGM 功能 同一张表 消费级产品系列支持字段值监视、配置管理、健康检查、作业统计和拓扑,但策略通知仅在 Tesla 上支持,诊断仅支持级别 1 支持。 与“功能受限”的描述一致
无法获取 XID 指标的原因 dcgm-exporter 上游 dcp-metrics-included.csv(标签 4.5.3-4.8.2) DCGM_FI_DEV_XID_ERRORS 是活动行,且 PROF 的五行顺序与日志完全重合 反驳(原本的推测)。 修正为:并非不在列表中,而是没有输出数值

未能确认的事项

参考资料

确认的版本与日期

基于 2026-10-05。dcgm-exporter 4.5.3-4.8.2,驱动程序 595.91.07 与 570.195.03。

登录后即可点赞

评论

还没有评论。

登录后即可发表评论