MTDCGM 诊断指南
概述
Moore Threads Validation Suite(MTVS),即 MTDCGM Diagnostics,是 MTDCGM 提供的 GPU 诊断工具,由多个插件组成,涵盖部署检查、硬件诊断和压力测试。您可以在业务上线前检查系统健康状态,也可以在故障发生后辅助定位问题。MTVS 支持交互式和脚本式运行,并提供从基础环境检查到长时间压力测试的多个诊断级别。
如果故障正在发生,请先按照 MT GPU 故障排查指南保留现场信息,再返回本文运行 MTDCGM 诊断。
适用范围
MTDCGM 诊断适用于以下场景:
- 在业务上线前验证系统环境和 GPU 状态;
- 根据需要执行快速检查、深度诊断或长时间压力测试;
- 通过交互模式手动诊断,或通过脚本模式 集成集群调度和运维系统;
- 在 GPU 作业失败前发现潜在问题,降低作业失败率和停机时间。
以下场景不在 MTDCGM 诊断的适用范围内:
- 替代完整的现场故障排查和整机硬件诊断;
- 主动修复检测到的问题;
- 单独作为硬件返修、退换或节点重新上线的判定依据;
- 通过单次诊断结果排除间歇性故障。
前提条件
运行诊断前,请确认:
- 使用 root 权限运行诊断;
PATH包含 MTDCGM 命令路径,LD_LIBRARY_PATH包含 MUSA 和 MTDCGM 动态库路径。配置方法参见 安装 MTDCGM;dcgmi可以连接到正在运行的mt-hostengine或其他 MTDCGM 后台服务。
运行级别和测试
不同诊 断级别包含的测试如下。以配备 8 块 S5000 GPU 的系统为例,r2、r3 和 r4 的参考时长分别约为 1 分钟、15 分钟和 30 分钟。
| 插件 | 测试名称 | r1(Short) | r2(Medium) | r3(Long) | r4(Extra Long) |
|---|---|---|---|---|---|
| Software | software | 是 | 是 | 是 | 是 |
| PCIe + MTLink | pcie | 是 | 是 | 是 | |
| GPU Memory | memory | 是 | 是 | 是 | |
| Targeted Stress | targeted_stress | 是 | 是 | ||
| Targeted Power | targeted_power | 是 | 是 | ||
| MTBandwidth | mtbandwidth | 是 | 是 | ||
| Memory Stress | memtest | 是 |
具体诊断时长取决于 GPU 数量、MUSA SDK 和固件版本、启用的插件及插件参数。请以目标环境中的实际运行时间为准;更换软件栈后应重新测量,不要直接沿用其他环境的时长。
快速入门
命令行参数
使用以下选项选择诊断对象、测试和输出方式:
| 短命令选项 | 长命令选项 | 参数 | 说明 |
|---|---|---|---|
-g | --group | groupId | 指定要查询的设备组 ID |
--host | IP/FQDN | 连接到指定的 IP 或 FQDN。对于 Unix 套接字,在文件名前加 unix:// 前缀。默认为 localhost | |
-h | --help | groupId | 显示帮助信息 |
-r | --run | diag | 运行诊断。编号更高的测试包含其下所有测试: 1:快速(系统验证,System Validation) 2:中等(扩展系统验证,Extended System Validation) 3:长时间(系统硬件诊断,System HW Diagnostics) 4:扩展(更长时间的系统硬件诊断,Longer-running System HW Diagnostics) |
-p | --parameters | test_name.variable_name=variable_name | 设置本次运行诊断所需的参数 |
-i | --gpuList | entityId | 逗号分隔的待运行 GPU ID 列表 |
-v | --verbose | 显示每个测试的信息和告警 | |
--statsonfail | 仅在失败时输出统计文件 | ||
--debugLogFile | debug file | 记录诊断的日志文件,默认 mtvs.log | |
--statspath | 将插件统计信息写入指定路径 | ||
-d | --debugLevel | debug level | 设置调试级别(NONE、FATAL、ERROR、WARN、INFO、DEBUG、VERB)。默认:DEBUG |
-j | --json | 以 JSON 格式输出诊断结果 | |
--iterations | iterations | 明确诊断要执行的迭代次数(必须大于 0) |
示例命令
测试和参数
以下命令指定 targeted_power 测试及其参数:
dcgmi diag -r targeted_power -p targeted_power.is_allowed=true\;targeted_power.target_power=300.0
迭代执行
使用 --iterations 设置 测试套件的迭代次数:
dcgmi diag -r pcie --iterations 3
日志
默认日志保存在执行诊断命令或启动 mt-hostengine 的目录中。使用以下命令可以输出 JSON 格式的诊断结果:
dcgmi diag -r pcie -j
...
{
"category": "Integration",
"tests": [
{
"name": "pcie",
"results": [
{
"entity_group": "GPU",
"entity_group_id": 1,
"entity_id": 0,
"info": [
"GPU to Host bandwidth:\t\t13.53 GB/s",
"Host to GPU bandwidth:\t\t12.05 GB/s",
"bidirectional bandwidth:\t23.69 GB/s",
"GPU to Host latency:\t\t0.791 us",
"Host to GPU latency:\t\t1.201 us",
"bidirectional latency:\t\t1.468 us"
],
"status": "Pass"
}
],
"test_summary": {
"status": "Pass"
}
}
]
}
...
如何区分命令失败、测试失败和 Skip,参见 FAQ 中的“诊断和故障处理”。
插件详情
MTVS 使用不同插件执行部署检查、硬件诊断和压力测试。下表概述各插件的主要用途:
| 插件 | 主要用途 |
|---|---|
| Deployment | 检查 MUSA 计算环境是否已准备就绪,以及 MTML 动态库能否正常加载 |
| PCIe - GPU 带宽 | 对主机与 GPU、GPU 与 GPU 之间的通信进行压力测试,并测量带宽与延迟 |
| GPU Memory | 验证 GPU 显存的完整性和读写功能,检测硬件故障和显存损坏 |
| Targeted Power | 使 GPU 功耗接近 TDP 并保持一段时间,验证 GPU 在功耗负载下能否正常工作 |
| Targeted Stress | 使 GPU 保持指定的性能和压力水平,验证持续负载下的稳定性 |
| Memtest | 使用多种测试模式检查 GPU 显存 |
| MTBandwidth | 测量单台主机中 GPU 的通信带宽 |
以下各节进一步说明插件的测试内容、参数和失败条件。
Deployment 插件
Deployment 插件用于检查 MUSA 计算环境是否已准备就绪,以及 MTML 动态库能否正常加载。
前置条件
-
LD_LIBRARY_PATH必须包含 MUSA 和 MTDCGM 的路径,可以执行如下命令:export LD_LIBRARY_PATH=/usr/local/musa/lib:${LD_LIBRARY_PATH}export LD_LIBRARY_PATH=/usr/local/mtdcgm/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH} -
如果要使用 MTDCGM 的二进制文件,如
dcgmi或mt-hostengine,则可以配置PATH环境变量:export PATH=/usr/local/mtdcgm/bin:${PATH}
失败条件
出现以下情况时,插件运行失败:
- 目标节点被操作系统阻塞(例如 cgroups)或当前用户缺乏读/写权限;
- 无法加载 MTML 库
libmtml.so; - 无法加载 MUSA 运行时库。
PCIe - GPU 带宽插件
PCIe 插件对主机与 GPU、GPU 与 GPU 之间的通信进行压力测试。测试会在写入数据时检查 P2P 正确性、错误和重放,并测量带宽与延迟。