跳到主要内容

功能概述

MTDCGM 提供 GPU 组管理、健康监控与诊断、拓扑查询、字段组管理和性能指标采集等功能。下文按功能介绍相关的 dcgmi 命令、输出结果和使用建议。

功能一览

功能主要用途使用入口
GPU 组管理查询 GPU 信息,创建和管理用于统一操作的 GPU 逻辑组dcgmi discoverydcgmi group
健康监控与诊断持续检查 GPU 和相关系统组件的健康状态,执行部署检查、硬件诊断和压力测试dcgmi healthdcgmi diag
拓扑查询查看 GPU 之间的连接关系和 NUMA 亲和性dcgmi topo
字段组管理创建和管理需要重复采集的监控字段组,按字段或字段组采集 GPU 运行数据dcgmi fieldgroupdcgmi 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:查询功能选择、监控和诊断相关的常见问题。