什么是NVIDIA DCGM?

NVIDIA 数据中心 GPU 管理器 (DCGM) 是一套专为管理和监控集群环境中的 NVIDIA 数据中心 GPU 而设计的综合工具集。它为数据中心提供了企业级的GPU管理解决方案。

核心功能特性

  • 🔍 主动运行状况监控 - 实时监控GPU健康状态
  • 🩺 全面诊断 - 多级别的硬件诊断和性能测试
  • 🚨 系统警报 - 智能告警系统和策略管理
  • 治理策略 - 包括电源和时钟管理
  • 🔧 易于集成 - 可轻松集成到现有的集群管理工具中
  • 🐳 Kubernetes支持 - 通过DCGM-Exporter提供容器化环境支持

支持平台

DCGM 支持以下平台的 Linux 操作系统:

  • x86_64 架构
  • Arm 架构
  • POWER (ppc64le) 架构

相关资源


安装DCGM

Ubuntu 22.04 环境部署

1. 获取安装包

根据你的系统架构选择对应的安装包:

x86架构:

1
2
# 下载地址
https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64/

ARM64架构(鲲鹏):

1
2
# 下载地址  
https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/sbsa/

2. 下载和安装

1
2
3
4
5
# 下载DCGM安装包
wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64/datacenter-gpu-manager_3.3.6_amd64.deb

# 安装DCGM
sudo dpkg -i datacenter-gpu-manager_3.3.6_amd64.deb

3. 验证安装

安装完成后,系统会包含以下关键二进制文件:

文件路径 功能描述
/usr/bin/dcgmi DCGM管理命令行工具,用于管理和监控NVIDIA GPU
/usr/bin/dcgmproftester10 DCGM性能检测工具第10版
/usr/bin/dcgmproftester11 DCGM性能检测工具第11版
/usr/bin/dcgmproftester12 DCGM性能检测工具第12版(推荐使用最新版本)
/usr/bin/nv-hostengine NVIDIA主引擎服务,提供GPU管理和监控的底层支持

4. 启动DCGM服务

1
2
3
4
5
6
7
8
# 启动DCGM系统服务
sudo systemctl start nvidia-dcgm.service

# 设置开机自启
sudo systemctl enable nvidia-dcgm.service

# 检查服务状态
sudo systemctl status nvidia-dcgm.service

DCGM基础使用

启动nv-hostengine

1
2
# 启动主机引擎(指定端口和绑定接口)
nv-hostengine --port 5555 --bind-interface 127.0.0.1

设备发现和管理

查看GPU设备列表

1
2
3
4
5
# 发现所有GPU设备
dcgmi discovery --host 127.0.0.1:5555 -l

# 或者简化命令
dcgmi discovery -l

群组管理

DCGM的大部分功能都是面向组的,因此需要先创建GPU组:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 查看现有群组
dcgmi group -l

# 创建群组并添加GPU(将GPU ID 0-7添加到group 0)
dcgmi group -g 0 -a 0,1,2,3,4,5,6,7

# 查看群组信息
dcgmi group -g 0 -i

# 从群组中删除GPU设备
dcgmi group -g 0 -r 0,1,2,3,4,5,6,7

# 删除指定群组
dcgmi group -d 0

监控和诊断功能

统计监控

1
2
3
4
5
# 启用统计监控
dcgmi stats -g 0 --enable

# 查看特定进程的统计信息
dcgmi stats --host 127.0.0.1:39999 -g 0 -p <进程PID> -v

健康检查

1
2
3
4
5
# 启用健康监控
dcgmi health -g 0 -s

# 查看当前健康状态
dcgmi health --check -g 0

诊断测试

DCGM提供4个级别的诊断测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Level 1: 快速检查(基础系统验证)
dcgmi diag -r 1
# 适用场景:快速检查GPU驱动、CUDA状态

# Level 2: 中等检查(扩展系统验证)  
dcgmi diag -r 2
# 适用场景:检查显存和计算单元基础功能,适合日常运维

# Level 3: 长期检查(硬件深度诊断)
dcgmi diag -r 3
# 适用场景:深度硬件检查,如PCIe稳定性、温度监控

# Level 4: 扩展检查(长期压力测试)
dcgmi diag -r 4
# 适用场景:长时间压力测试,排查偶发硬件故障

NVLink监控

1
2
3
4
5
# 检查NVLink错误计数器
dcgmi nvlink --errors -g 0

# 查看NVLink连接状态
dcgmi nvlink --link-status

配置管理

查看和修改GPU配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 查看当前配置
dcgmi config --host 127.0.0.1:39999 -g 0 --get -v

# 修改计算模式
dcgmi config --host 127.0.0.1:39999 -g 0 --set -c 2

# 启用ECC模式
dcgmi config --host 127.0.0.1:39999 -g 0 --set -e on

# 设置GPU功率限制(单位:W)
dcgmi config --host 127.0.0.1:39999 -g 0 --set -p 300

# 设置时钟频率(内存2000MHz,SM时钟1200MHz)
dcgmi config --host 127.0.0.1:39999 -g 0 --set -m 2000 -s 1200

策略管理

告警策略配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查看当前策略
dcgmi policy --host 127.0.0.1:39999 -g 0 --get

# 设置温度告警阈值(最大温度50°C)
dcgmi policy --host 127.0.0.1:39999 -g 0 --set 0,0 -T 50

# 刷新策略
dcgmi policy --host 127.0.0.1:39999 -g 0 --reg

# 清空所有策略
dcgmi policy --host 127.0.0.1:39999 -g 0 --clear

DCGM Profiling性能分析

功能要求

使用DCGM Profiling功能需要满足以下条件:

  • ✅ DCGM版本 ≥ 1.7
  • ✅ NVIDIA驱动版本 ≥ 418.43
  • ✅ nv-hostengine以root身份启动
  • ✅ 支持的GPU型号:Tesla V100、Tesla T4等

可获取的性能指标

指标名称 说明 Field Name
Graphics Engine Activity 图形引擎活跃度比率 PROF_GR_ENGINE_ACTIVE (ID: 1001)
SM Activity SM单元活跃度比率 PROF_SM_ACTIVE (ID: 1002)
SM Occupancy SM占用率 PROF_SM_OCCUPANCY (ID: 1003)
Tensor Activity Tensor核心活跃度 PROF_PIPE_TENSOR_ACTIVE (ID: 1004)
Memory BW Utilization 内存带宽利用率 PROF_DRAM_ACTIVE (ID: 1005)
Engine Activity FP64/FP32/FP16/HMMA/IMMA管道活跃度 PROF_PIPE_FPXY_ACTIVE (多个ID)
NVLink Activity NVLink传输字节数 DEV_NVLINK_BANDWIDTH_L0
PCIe Bandwidth PCIe传输字节数 PROF_PCIE_TX/RX_BYTES (ID: 1009/1010)

最佳实践建议

1. 日常监控

  • 定期运行Level 2诊断检查GPU基础功能
  • 设置合理的温度和功率告警阈值
  • 启用统计监控跟踪GPU使用率

2. 故障排查

  • 使用Level 3/4诊断进行深度硬件检查
  • 监控NVLink错误计数器识别连接问题
  • 结合health检查功能定期评估GPU健康状态

3. 性能优化

  • 利用Profiling功能分析GPU利用率
  • 根据工作负载调整时钟频率和功率限制
  • 监控内存带宽和计算单元占用率

4. 集群管理

  • 将DCGM集成到Kubernetes环境中
  • 使用DCGM-Exporter导出监控指标到Prometheus
  • 建立自动化的GPU健康检查流程

总结

NVIDIA DCGM是数据中心GPU管理的强大工具,提供了从基础监控到深度诊断的全方位功能。通过合理配置和使用DCGM,可以显著提高GPU集群的可靠性、可观测性和管理效率。

无论是运维团队的日常监控,还是开发团队的性能调优,DCGM都是不可或缺的工具。建议在生产环境中建立完整的DCGM监控体系,以确保GPU资源的高效利用。

个人实践经验

在实际的万卡GPU集群运维工作中,我总结了以下几点经验:

🔧 运维要点

  1. 定期健康检查:建议每日运行Level 2诊断,每周进行Level 3深度检查
  2. 告警策略设置:根据业务特点设置合理的温度、功率告警阈值
  3. 日志监控:结合系统日志监控GPU状态变化,及时发现异常

📊 监控集成

在Kubernetes环境中,推荐使用DCGM-Exporter结合Prometheus和Grafana构建完整的GPU监控体系:

1
2
# 部署DCGM-Exporter到K8s集群
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/main/deployment/dcgm-exporter.yaml