MTDCGM 功能概述
MTDCGM 提供 GPU 组管理、健康监控与诊断、拓扑查询、字段组管理和性能指标采集等功能。下文按功能介绍相关的 dcgmi 命令、输出结果和使用建议。
功能一览
| 功能 | 主要用途 | 使用入口 |
|---|---|---|
| GPU 组管理 | 查询 GPU 信息,创建和管理用于统一操作的 GPU 逻辑组 | dcgmi discovery、dcgmi group |
| 健康监控与诊断 | 持续检查 GPU 和相关系统组件的健康状态,执行部署检查、硬件诊断和压力测试 | dcgmi health、dcgmi diag |
| 拓扑查询 | 查看 GPU 之间的连接关系和 NUMA 亲和性 | dcgmi topo |
| 字段组管理 | 创建和管理需要重复采集的监控字段组,按字段或字段组采集 GPU 运行数据 | dcgmi fieldgroup、dcgmi dmon |
| 性能指标 | 通过 GPU 硬件计数器采集性能数据 | MTDCGM API |
组(Group)
MTDCGM 的大多数操作都以组为对象。您可以在本地节点上创建、删除或修改 GPU 组,并通过组指定后续操作的目标 GPU。
组(Group)是一种 逻辑资源,用于统一管理一组 GPU。
MTDCGM 目前只维护组的逻辑关系,不会通过 cgroups 等操作系统隔离机制对组施加约束。相关控制需要由客户端在 MTDCGM 之外完成。后续版本可能允许客户端选择由 MTDCGM 执行这类约束。
对于只有一块 GPU 的节点,所有需要指定组的操作都可以使用仅包含该 GPU 的组,无需额外规划分组。MTDCGM 初始化时会自动创建一个默认组,其中包含系统支持的所有 GPU。
不同组可以包含相同的 GPU,以满足不同的管理需求。例如,包含系统所有 GPU 的全局组适合执行全局健康检查等节点级操作;仅包含部分 GPU 的分区组适合执行作业相关 GPU 的健康检查等作业级操作。
建议客户端保留一个长期存在的全局组,用于节点级操作。
使用 dcgmi group 子命令可以创建、查看和删除组:
dcgmi group -c GPU_Group
结果输出:
Successfully created group "GPU_Group" with a group ID of 1
dcgmi group -l
结果输出:
1 group found.
+----------------------------------------------------------------------------+
| GROUPS |
+============+===============================================================+
| Group ID | 1 |
| Group Name | GPU_Group |
| GPU ID(s) | None |
+------------+---------------------------------------------------------------+
dcgmi group -d 1
结果输出:
Successfully removed group 1
向组中添加 GPU 前,请先确定 GPU ID。dcgmi discovery -l 默认列出系统中的所有 GPU:
dcgmi discovery -l
结果输出:
+--------+-------------------------------------------------------------------+
| GPU ID | Device Information |
+========+===================================================================+
| 0 | Name: S5000 |
| | PCI Bus ID: 0000:01:00.0 |
| | Device UUID: 7f3a91c2e84b4d6a9c0152f7b83e6d41 |
+--------+-------------------------------------------------------------------+
| 2 | Name: S5000 |
| | PCI Bus ID: 0000:02:00.0 |
| | Device UUID: c6b28e5a10394f7db2a861ce5490f3b7 |
+--------+-------------------------------------------------------------------+
dcgmi group -g 1 -a 0,1
结果输出:
Add to group operation successful.
dcgmi group -g 1 -i
结果输出:
+----------------------------------------------------------------------------+
| GROUPS |
+============+===============================================================+
| Group ID | 1 |
| Group Name | GPU_Group |
| GPU ID(s) | 0, 1 |
+------------+---------------------------------------------------------------+
添加或移除组内实体时,MTDCGM 会将纯数字解析为 GPU ID。因此,0,1 等同于 gpu:0,gpu:1。
各命令支持的实体语法,参见对应 dcgmi 子命令的 --help 输出。
健康与诊断(Health and Diagnostics)
MTDCGM 支持通过后台监测和主动诊断评估 GPU 健康状态。工作负载运行期间,可以使用非侵入式检查了解 GPU 的整体状态;GPU 可供专用测试独占使用时,可以运行主动检查。此外,MTDCGM 支持在当前系统环境中运行在线硬件诊断。
根据检查时机和目的,可以选择以下方式:
- 后台健康检查(Background health checks):在作业运行期间持续监测,可随时查询,不影 响应用行为或性能。
- 作业前健康检查(Prologue health checks):在提交作业前运行,通常耗时数秒,用于快速确认 GPU 是否已准备就绪。此检查具有侵入性。
- 作业后健康检查(Epilogue health checks):在作业失败或 GPU 健康状态存疑时运行,通常耗时数分钟。此检查具有侵入性。
- 完整系统验证(Full system validation):在排查硬件故障或其他严重问题时运行,通常耗时数十分钟。此检查具有侵入性。
后台健康检查
后台健康检查通过被动监测软硬件组件,在不影响应用行为和性能的情况下发现关键问题,例如 GPU 无响应、固件损坏或温度失控。
发现问题后,MTDCGM 会根据严重程度报告告警(Warning)或错误(Error):
- 告警(Warning):问题不会阻止当前工作完成,但需要进一步检查。
- 错误(Error):问题较为严重,当前工作很可能已受影响或中断。
可以通过以下命令为组启用后台健康监测:
dcgmi health -g 1 -s pl
结果输出:
Health monitor systems set successfully.
可用的健康监测标志如下:
p:PCIe 监视l:MTLink 监视a:全部监视
使用以下命令查看组的健康状态:
dcgmi health -g 1 -c
结果输出:
Health Monitor Report
+----------------------------------------------------------------------------+
| Group 1 | Overall Health: Warning |
+==================+=========================================================+
| GPU ID: 0 | Warning |
| | PCIe system: Warning - Detected more than 8 PCIe |
| | replays per minute for GPU 0: 13 |
+------------------+---------------------------------------------------------+
以下情况会导致健康检查失败:
| 系统 | 错误码 | 原因 |
|---|---|---|
| PCIe | DCGM_FR_PCI_REPLAY_RATE | 最近一分钟的 PCIe 重放增量超过当前 PCIe 代际和链路宽度对应的阈值 |
| MTLink | DCGM_FR_MTLINK_CRC_ERROR_THRESHOLD | MTLink 数据或流控 CRC 错误达到每秒 100 次 |
PCIe 重放阈值由 MTDCGM 根据 PCIe 代际和链路宽度计算。例如,PCIe Gen3 x16 的阈值为每分钟 8 次。计数器没有变化或增量未超过阈值时,健康检查不会报告该告警。
上述 dcgmi 接口仅报告当前健康状态。如需了解事件发生的时间范围及其与运行进程的关联,可以通过其他接口查询更详细的底层数据。
主动健康检查
主动健康检查由 MTVS(MTDCGM Diagnostics)执行,具有侵入性,需要独占访问目标 GPU。MTDCGM 通过运行实际工作负载并分析结果,可以识别以下常见问题:
- 部署和软件问题(Deployment and Software Issues):MTML 库的访问和版本问题,以及第三方软件冲突。
- 集成问题(Integration Issues):PCIe/MTLink 总线上的可纠正和不可纠正问题、拓扑限制、操作系统级设备限制、cgroups 检查,以及基本功耗和温度约束检查。
- 压力检查(Stress Checks):功耗和温度压力、PCIe/MTLink 吞吐压力,以及恒定和最大相对系统性能。
- 硬件问题与诊断(Hardware Issues and Diagnostics):GPU 硬件和 SRAM、计算鲁棒性、内存及 PCIe/MTLink 总线问题。
MTDCGM 提供三个诊断级别,具体参数可通过 dcgmi diag --help 查看。各级别的测试套件、预计时长和测试类别如下:
| 测试套件 | 运行级别 | 测试时长 | 测试类别 |
|---|---|---|---|
| 快速(Quick) | -r 1 | 约几秒钟 | Deployment |
| 中等(Medium) | -r 2 | 约 1 分钟 | Deployment,Memory Test,PCIe/MTLink |
| 长时间(Long) | -r 3 | 约 15 分钟 | Deployment,Memory Test,PCIe/MTLink,Targeted Stress,Targeted Power,MTBandwidth |
在 S5000 GPU 上,MTDCGM 可以执行硬件诊断、连通性诊断和压力测试:
dcgmi diag -r 3
结果输出:
Successfully ran diagnostic for group.
+--------------------------+------------------------------------------------+
| Diagnostic | Result |
+==========================+================================================+
|---- Metadata -----------|------------------------------------------------|
| DCGM Community Version | 3.3.6 |
| MT Version | 1.1.7 |
| Driver Version Detected | 3.3.8-server |
| GPU Device IDs Detected | 0400, 0400, 0400, 0400, 0400, 0400, 0400, 0400 |
|---- Deployment ---------|------------------------------------------------|
| MTML Library | Pass |
| MUSA Main Library | Pass |
| Permissions and OS Blocks| Pass |
+--------------------------+------------------------------------------------+
|---- Integration --------|------------------------------------------------|
| PCIe | Pass - All |
|---- Hardware -----------|------------------------------------------------|
| GPU Memory | Pass - All |
+--------------------------+------------------------------------------------+
|---- Stress -------------|------------------------------------------------|
| Targeted Stress | Pass - All |
| Targeted Power | Skip - All |
| Memory Bandwidth | Skip - All |
+--------------------------+------------------------------------------------+
运行系统验证和压力检查时,MTDCGM 会在运行目录中生成 JSON 文本文件,用于记录额外的时间序列数据。
有关诊断前置条件、dcgmi diag 参数、日志、各插件的测试内容和失败条件,参见 MTDCGM 诊断指南。
拓扑(Topology)
MTDCGM 提供设备级详细视图和组级汇总视图,用于查看 GPU 之间的连接关系和 NUMA 亲和性。
查看设备级拓扑:
dcgmi topo --gpuid 0
结果输出:
+-------------------+------------------------------------------------------------------------------+
| Topology Information |
| GPU ID: 0 |
+===================+==============================================================================+
| CPU Core Affinity | 0 - 31, 64 - 95 |
| To GPU 1 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 8, 10) |
| To GPU 2 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 9, 11) |
| To GPU 3 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 12, 13) |
| To GPU 4 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 4, 7) |
| To GPU 5 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 1, 2) |
| To GPU 6 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 0, 3) |
| To GPU 7 | Connected via a CPU-level link |
| | Connected via two MTLINKs (Links: 5, 6) |
+-------------------+------------------------------------------------------------------------------+
查看组级拓扑:
dcgmi topo -g 1
结果输出:
+-------------------+------------------------------------------------------------------------------+
| Topology Information |
| DCGM_ALL_SUPPORTED_GPUS |
+===================+==============================================================================+
| CPU Core Affinity | 0 - 127 |
| NUMA Optimal | False |
| Worst Path | Connected via a CPU-level link |
+-------------------+------------------------------------------------------------------------------+
CPU-level link 表示两块 GPU 之间的 PCIe 路径经过 CPU 层级:即使位于同一 CPU 下,也可能跨越多个 PCIe Host Bridge;SYSTEM 层级还可能跨 CPU。该信息描述的是 PCIe/NUMA 路径,并不表示 GPU 之间存在额外的直连链路。如果输出中同时出现 MTLINK,下一行会单独显示 MTLink 直连数量。
字段组(Field Groups)
MTDCGM 提供预定义的字段组(Field Group,也称域组),也支持创建自定义字段组。
dcgmi fieldgroup -l
结果输出:
2 field groups found.
+-------------------+----------------------------------------------------------+
| FIELD GROUPS |
+===================+==========================================================+
| ID | 1 |
| Name | DCGM_INTERNAL_30SEC |
| Field IDs | 300 |
+-------------------+----------------------------------------------------------+
+-------------------+----------------------------------------------------------+
| FIELD GROUPS |
+===================+==========================================================+
| ID | 2 |
| Name | DCGM_INTERNAL_JOB |
| Field IDs | 155, 200, 201, 202, 203, 311, 100, 101, 230, 390, 391, |
| | 3202, 419, 429, 439 |
+-------------------+----------------------------------------------------------+
创建自定义字段组:
dcgmi fieldgroup -c mygroupname -f 50,51,52
结果输出:
Successfully created field group "mygroupname" with a field group ID of 3
查看字段组信息:
dcgmi fieldgroup -i --fieldgroup 3
结果输出:
+-------------------+----------------------------------------------------------+
| FIELD GROUPS |
+===================+==========================================================+
| ID | 3 |
| Name | mygroupname |
| Field IDs | 50, 51, 52 |
+-------------------+----------------------------------------------------------+
删除字段组:
dcgmi fieldgroup -d -g 3
结果输出:
Successfully removed field group 3
预定义字段组无法删除:
dcgmi fieldgroup -d -g 1
结果输出:
Error: Cannot destroy field group 1. Return: No permission
在 dcgmi dmon 中使用自定义字段组:
dcgmi dmon --field-group-id 5
结果输出:
#Entity DVNAM DVBRN MTIDX
ID
GPU 7 MTT S5000 MTT 7
GPU 6 MTT S5000 MTT 6
GPU 5 MTT S5000 MTT 5
GPU 4 MTT S5000 MTT 4
GPU 3 MTT S5000 MTT 3
GPU 2 MTT S5000 MTT 2
GPU 1 MTT S5000 MTT 1
GPU 0 MTT S5000 MTT 0
...
性能指标(Profiling Metrics)
随着数据 中心部署越来越多 GPU 服务器,了解应用性能和 GPU 资源利用率变得更加重要。MTDCGM 通过 GPU 硬件计数器采集性能指标。
MTDCGM 的性能分析模块将这些指标作为新增字段提供,可通过常规 MTDCGM API 访问。
指标(Metrics)
默认采样频率为 1 Hz,即每秒采样一次。可配置的最短采样周期为 1 秒。
支持以下设备级 GPU 指标(Device Level GPU Metrics):
| 指标 | 定义 | 字段名称(DCGM_FI_*)和 ID |
|---|---|---|
| GPU Engine Active | 图形或计算引擎处于活动状态的时间占比 | DCGM_FI_PROF_GPU_ENGINE_ACTIVE(ID:2001) |
| MP Active | 指定采样周期内,MP 执行 warp 的时间占比。该值为所有 MP 在采样周期内的平均值,用于衡量 MP 利用率 | DCGM_FI_PROF_MP_ACTIVE(ID:2002) |
| MP Occupancy | 指定时刻 MP 调度队列的占用率。该值为所有 MP 在该时刻的平均值,用于反映 warp 在 MP 上的分配和调度情况 | DCGM_FI_PROF_MP_OCCUPANCY(ID:2003) |
| Tensor Active | 指定采样周期内,任一 Tensor Engine 处于活动状态的周期占比。该值为所有 MP 在采样周期内的平均值,用于衡量 Tensor Engine 的繁忙程度 | DCGM_FI_PROF_PIPE_MT_TENSOR_ACTIVE(ID:2004) |
| DRAM Active | 指定采样周期内,DDR 接口发送或接收数据的时间占比,用于衡量 DDR 接口的繁忙程度 | DCGM_FI_PROF_MT_DRAM_ACTIVE(ID:2005) |
Profiling Metrics 功能在以下场景会出现冲突:
- 使用 MTDCGM 多进程
- MTDCGM 和 Moore Perf Compute 同时使用

