跳到主要内容

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 |
+------------------+---------------------------------------------------------+

以下情况会导致健康检查失败:

系统错误码原因
PCIeDCGM_FR_PCI_REPLAY_RATE最近一分钟的 PCIe 重放增量超过当前 PCIe 代际和链路宽度对应的阈值
MTLinkDCGM_FR_MTLINK_CRC_ERROR_THRESHOLDMTLink 数据或流控 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 同时使用


相关文档​

  • 快速入门:安装并验证 MTDCGM,了解主要组件和运行模式。
  • 诊断指南:查看主动健康检查的前置条件、参数、插件和失败条件。
  • API 参考手册:通过 API 使用 MTDCGM 的管理和监控功能。
  • FAQ:查询功能选择、监控和诊断相关的常见问题。