从 nvidia-smi、DCGM 指标到 Xid 31、79、119/120,梳理一线排查、日志取证、隔离恢复与硬件升级边界,避免把告警直接等同于返厂。
GPU 监控指标与 XID 故障速查——一线运维的 6 张表
训练突然变慢、推理延迟升高、GPU 从 nvidia-smi 中消失,一线运维需要先回答三个问题:影响了谁、还能否继续运行、下一步该交给谁处理。
本文面向 H800、A100 与 GeForce RTX 4090 等混合集群,把指标解释、Xid 分流、取证与升级整理为六张表。它们用于缩小排查范围,不能替代设备具体型号、驱动版本和服务器厂商的诊断流程。
说明
阅读范围:命令以 Linux / Bash 为主,官方资料核对至 2026 年 9 月 20 日。文中的“告警建议”属于可调整的运维策略;设备保护阈值和 RMA(返修授权)条件必须以对应产品及供应商规则为准。若资产系统使用“H800A”等内部名称,请先核对实际 GPU、SXM / PCIe 形态、板卡料号和服务器配置。
先记住处置顺序
确认业务影响 → 留存现场 → 限制故障资源继续接单 → 按恢复要求处理 → 验证后重新纳管。 若业务或数据风险仍在持续,取证与隔离应并行推进。
应用异常不一定需要重启节点;隔离节点也不意味着已经认定 GPU 硬件损坏。发生故障时,先关联同一时刻的应用、驱动、PCIe、NVLink 和 BMC 事件,再确定影响范围。
同一场 GPU 异常,可以用三层证据来解释:先确认任务影响,再把设备状态、历史趋势与事件时间线对齐。
表 1:nvidia-smi 必看的 8 个健康字段
先运行一次查询。命令包含表中的八个健康字段,以及时间、UUID、PCI 地址等定位信息:
nvidia-smi \
--query-gpu=timestamp,index,uuid,pci.bus_id,name,temperature.gpu,utilization.gpu,memory.used,memory.total,power.draw,power.limit,pstate,ecc.errors.uncorrected.volatile.total \
--format=csv| 字段 | 读数表示什么 | 一线判断与下一步 |
|---|---|---|
temperature.gpu | GPU 温度,单位 °C | 对照本卡温度上限和热降频原因;不要跨型号套用 85°C、88°C 等固定“健康线” |
utilization.gpu | 采样窗口内有 GPU kernel 执行的时间比例,单位 % | 与训练 step time、推理吞吐和延迟一起看;高读数不等于高算力效率,低读数不一定是故障 |
memory.used | 已使用的设备显存,通常以 MiB 显示 | 比较业务峰值、临时 workspace、KV cache 和通信需求;不能统一规定“用到 95% 仍安全” |
memory.total | 驱动报告的总显存 | 作为容量基准;同时参考 memory.free,并核对 MIG 配置与预留显存 |
power.draw | 设备报告的功耗,单位 W;平均或瞬时口径依硬件与字段而异 | 结合频率、负载及限功耗原因判断;低功耗不自动表示异常 |
power.limit | 配置的功率限制,单位 W | 与默认值、允许范围及实际执行的限制对照;不是统一的板卡额定功率 |
pstate | 性能状态 | P0 是最高性能状态,但 P2 不等于空转;结合时钟、活动量和限频原因判断 |
ecc.errors.uncorrected.volatile.total | 支持该字段的设备上,自本次驱动加载以来的不可纠正 ECC 计数 | 新增或首次发现未处理的非零值,应立即分诊;结合具体错误位置、Xid、恢复动作和历史处置记录决定隔离范围 |
字段含义与支持范围见 NVIDIA-SMI 文档。返回 N/A 表示不可用或不支持,不能转换成“0 错误”;4090 尤其不能照搬数据中心卡的 ECC 监控能力。
需要连续观察时,可在查询末尾加 --loop=2。nvidia-smi 并非只能以 1Hz 查询,也支持 --loop-ms;但轮询加快不会自动提高底层传感器或硬件计数器的更新速度。脚本长期采集更适合使用 NVML 或 exporter。
运维记录应以 GPU UUID + PCI Bus ID 定位设备,index 只用于当次查询。卡序号可能在重启后变化;volatile ECC 计数也可能随驱动重新加载而归零,不能把重启后的零值当作从未发生故障。
表 2:DCGM 与 exporter 的重点指标
DCGM 的价值在于集中采集、活动计数器和健康诊断,而不是“它总比 nvidia-smi 采样快”。生产环境还需分别配置 DCGM 更新周期、exporter 采集周期与 Prometheus 抓取周期。
以下使用常见 dcgm-exporter 输出名。实际导出的字段取决于版本、采集配置、GPU 和权限;部分字段默认未启用。DCGM API 文档中的底层名称也可能已经改为 *_UTIL_RATIO 等写法,不能把 API 名称直接当作 Prometheus 指标名。官方采集配置、exporter 指标映射
| 指标 | 类型 / 单位 | 正确用途与常见误读 |
|---|---|---|
DCGM_FI_PROF_SM_ACTIVE | Gauge;比例 0–1 | SM 存在活跃 warp 的时间比例,经 SM 平均;等待访存也可能计为 active,不能等同于有效计算占比 |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE | Gauge;比例 0–1 | Tensor 管线活动比例;低于 0.3 不等于“没有使用 Tensor Core”,更不能单凭它反推数据精度 |
DCGM_FI_PROF_DRAM_ACTIVE | Gauge;比例 0–1 | 设备显存接口活动程度;不是显存容量占用率,也不是直接测得的 GB/s |
DCGM_FI_PROF_NVLINK_TX_BYTES / DCGM_FI_PROF_NVLINK_RX_BYTES | Gauge;bytes/s | 采样区间的 NVLink 发送 / 接收速率;已是速率,不应再次 rate(),也不能统一套用单向 900GB/s |
DCGM_FI_DEV_XID_ERRORS | Gauge;Xid 代码值 | 常见配置表示最近一次报告的 Xid;79 表示代码 79,不是 79 次,更不是每秒 79 次 |
DCGM_FI_DEV_ECC_DBE_VOL_TOTAL | Counter;次数 | 跟踪不可纠正 ECC 事件增量,并识别计数器重置;需结合 DRAM / SRAM 分类和 Xid |
DCGM_FI_DEV_ROW_REMAP_FAILURE | Gauge;状态值 | 在支持行重映射的设备上识别 failure 状态;失败应升级调查,pending 与 failure 含义不同 |
DCGM_FI_DEV_PCIE_REPLAY_COUNTER | Counter;次数 | 观察 PCIe 重传增量及其与吞吐的关系;累计非零不等于链路当前故障 |
Profiling 指标是时间窗口平均值。单位和活动定义见 DCGM Profiling 文档。换算时,0.25 才是 25%;NVLink 的 bytes/s 转十进制 GB/s 应除以 1e9,同时确认是整卡聚合还是单链路、单向还是双向。
在目标节点上先确认支持范围:
dcgmi discovery -l
dcgmi profile --help
dcgmi profile -l -i 0
# 以下假设 exporter 暴露在本机默认端口,且允许本机访问
curl -fsS http://127.0.0.1:9400/metrics非数据中心 GPU 的 DCGM 功能有限,Profiling 官方支持范围也不能直接外推到 GeForce。4090 或 MIG 环境出现缺项时,应先检查支持矩阵、配置和实体范围,而不是补零后显示为“健康”。MIG 实例与整卡的指标不能混在同一个容量或利用率分母中。DCGM 平台说明
**关于 Xid 告警:**不要对 DCGM_FI_DEV_XID_ERRORS 使用 rate() 或 increase() 统计次数;changes() 也会漏掉连续重复的相同代码。事件计数优先从内核日志生成,或者使用已核实版本语义的 exporter 事件计数指标。新版提供的 DCGM_EXP_XID_ERRORS_TOTAL 与旧的代码值 Gauge 并不是同一指标。exporter 指标类型说明
“GPU 利用率 90%、Tensor 活动 25%”只能作为进一步分析的线索。通信等待、访存瓶颈、小 batch、算子混合和采样平均都可能影响读数;要定位到算子,应在可控复现环境使用 Nsight Systems / Compute,并协调它们与 DCGM Profiling 的计数器占用。
表 3:重点 Xid 错误与第一步动作
Xid 是驱动记录的错误事件代码,不是“故障部件编号”。先查看故障前后的完整事件序列、关联进程和恢复要求;同一时间多张卡报警时,后续 Xid 可能只是对端故障的连带结果。
下表给出分诊方向。具体代码定义以 NVIDIA Xid Catalog 为准;内存恢复另参考 GPU Memory Error Management。
| Xid | 含义 | 第一时间做什么 |
|---|---|---|
| 13 | 图形 / 计算引擎异常 | 保留应用错误栈;检查非法指令、越界等问题,必要时用 Compute Sanitizer 复现 |
| 31 | GPU 内存页错误 / MMU fault | 查非法地址访问与关联进程;同时保留驱动、内存和平台线索,不能直接排除硬件 |
| 43 | 应用触发的软件故障,相关工作终止 | 检查应用日志与前序 Xid;不要直接等同于 OOM |
| 48 | 不可纠正 ECC 错误 | 停止受影响工作继续使用错误状态,检查 63/64/94/95 等关联事件并执行所需恢复 |
| 63 | 内存修复记录事件;旧卡为页退役,支持的较新卡为行重映射 | 读取 pending / failure 状态与 ECC 上下文;不能解释成“可纠正错误已经完全修好” |
| 64 | 内存修复记录 / 重映射失败 | 限制受影响资源继续接单,立即升级并按恢复指引处理;不要只累计次数观察 |
| 74 | NVLink 异常 | 同时检查链路两端、拓扑及 NVSwitch / Fabric Manager 日志;多卡同时报错不等于应直接重启全部节点 |
| 79 | GPU 无法再经 PCIe 被驱动访问 | 隔离受影响资源,收集 PCIe AER、供电和 BMC 证据;故障可能在 GPU、链路或平台 |
| 94 / 95 | 分别为已隔离 / 未隔离的内存错误 | 94 通常先恢复受影响应用;95 需按要求恢复设备,不能只重启容器 |
| 119 / 120 | 分别为 GSP RPC 超时 / GSP 错误 | 收集驱动与 GSP 固件信息,按恢复动作处理并升级;不等于机密计算错误或 HBM 报废 |
| 154 | GPU 恢复动作发生变化 | 阅读消息要求的 Reset、Reboot、Drain 等动作,并关联前序错误;它本身不是根因 |
Xid 31:先复现应用,也保留硬件证据
如果只有某个版本的应用稳定触发异常,而其他工作正常,优先交给应用团队定位。最小复现可以在测试环境使用:
# ./your_app 替换为已准备好的最小复现程序
compute-sanitizer --tool memcheck ./your_app该工具用于检查设备内存访问错误,会改变运行开销,不宜直接套在满负载生产任务上。若不同应用都在同一设备失败,或同时出现 ECC、PCIe 错误,应并行升级平台排查,而不是宣布“确定是代码 bug”。Compute Sanitizer 文档
Xid 79:查“为什么访问不到”,不要先判卡坏
保存 GPU UUID、PCI 地址和故障前后的内核日志,检查 lspci 是否仍能枚举设备,并关联上游 PCIe、riser、供电与 BMC 事件。GPU 掉线时,设备侧工具本身也可能失败,因此主机和带外日志尤其重要。
跨槽位或跨服务器对照测试,应由硬件团队在停机条件下执行,确认问题跟随板卡还是留在平台;SXM 模组不能套用普通 PCIe 插卡的现场操作方式。节点分诊指南、供应商升级流程参考
Xid 119 / 120:先处理 GSP 和驱动恢复链路
GSP 是 GPU System Processor。遇到 119/120,记录驱动分支、GSP 固件版本、近期升级和复现频率,收集 bug report 后按要求执行 GPU reset 或节点重启 / 断电重启。若恢复后仍复现,将材料交给供应商继续定位;一次事件不能证明必须返厂。GSP 错误定义
从报警到恢复:先保留现场,再按证据分流;存在持续业务或数据风险时,取证与资源隔离并行。
表 4:工具、日志与取证位置
| 工具 / 来源 | 优先保存什么 | 使用边界 |
|---|---|---|
nvidia-smi / NVML | 身份信息、完整 -q 输出、ECC、温度、功耗、时钟与恢复动作 | 设备掉线时可能超时;保留失败信息也是证据 |
内核 journal / dmesg | NVRM、Xid、PCIe AER、关联时间线 | 优先保存未过滤原文;dmesg 环形缓冲可能被覆盖 |
nvidia-bug-report.sh | 驱动、系统状态与诊断日志包 | 尽可能在重启前运行;它不是硬件合格证 |
| DCGM / dcgm-exporter | 异常前后趋势、诊断 JSON、具体失败项 | 先确认版本、权限及支持范围;主动诊断会使用 GPU 资源 |
lspci、NVLink / 拓扑查询 | PCIe 链路状态、GPU 互连及链路错误 | 对照正常节点;不同代际的 NVLink 错误计数器不一定相同 |
| BMC / Redfish / IPMI | SEL、PSU、入风、风扇、掉电与硬件告警 | 时间源可能与主机不同,需要对齐时区与时钟 |
| 应用与编排平台 | CUDA 错误、NCCL 日志、任务 ID、容器镜像、退出原因 | OOMKilled、CUDA OOM 与 Xid 是不同证据,不能相互替代 |
| Fabric Manager / NVSwitch | Fabric 状态、服务日志、SXid | 适用于部署相应互连和服务的系统;不是所有 GPU 服务器都有 |
最小取证命令
以下命令只采集现场,不进行 reset。假设使用 systemd,且已安装 NVIDIA 驱动、pciutils 和 GNU timeout:
umask 077
GPU_EVIDENCE_DIR="gpu-evidence-$(date -u +%Y%m%dT%H%M%SZ)"
mkdir -p "$GPU_EVIDENCE_DIR"
date -u --iso-8601=seconds > "$GPU_EVIDENCE_DIR/collected-at.txt"
uname -a > "$GPU_EVIDENCE_DIR/uname.txt"
# 先保留完整内核时间线,再另外筛选
sudo journalctl -k -b --since '1 hour ago' \
--utc -o short-iso-precise --no-pager \
> "$GPU_EVIDENCE_DIR/kernel.log" 2>&1
# 超时或命令失败时,记录输出与返回码,继续其他取证
timeout 20s nvidia-smi -q \
> "$GPU_EVIDENCE_DIR/nvidia-smi-q.txt" 2>&1
printf '%s\n' "$?" > "$GPU_EVIDENCE_DIR/nvidia-smi-q.exit-code.txt"
sudo lspci -Dnnvv > "$GPU_EVIDENCE_DIR/lspci.txt" 2>&1
grep -Ei 'NVRM|Xid|SXid|AER|PCIe|NVIDIA' \
"$GPU_EVIDENCE_DIR/kernel.log" \
> "$GPU_EVIDENCE_DIR/kernel-filtered.log"
# 默认在当前目录生成 nvidia-bug-report.log.gz
(cd "$GPU_EVIDENCE_DIR" && sudo nvidia-bug-report.sh)若取证命令卡住,应保留已经得到的部分材料和失败记录,不要因此无限期推迟故障隔离。重启后补充日志时,应明确区分“故障现场”和“恢复后”两个阶段。采集包可能包含主机、进程和路径信息,对外提交前按组织要求脱敏。
没有持久化 journal 的节点,重启后未必能读取上一轮启动日志;应提前配置日志留存或远程采集。/var/log/syslog、/var/log/messages 是否存在取决于发行版和日志配置;/var/log/nvidia-installer.log 主要记录安装过程,不是运行时 Xid 的主日志。NVIDIA 事件取证要求、bug report 说明
DCGM 诊断不要写成固定的“5 分钟 / 30 分钟”
在支持的设备上,按维护流程确认测试范围和业务已迁出后执行:
dcgmi diag --help
# 短测试,主要检查软件和部署条件
dcgmi diag -r 1 -j > dcgm-short.json
# 长测试:可能施加显存、计算、功耗和互连负载
dcgmi diag -r 3 -j > dcgm-long.json诊断耗时与版本、卡数、测试插件和参数有关,不能承诺固定时长。FAIL 需要进一步读取失败项:权限、部署、温度和硬件异常都可能造成失败;SKIP、不支持或无法执行也不能写成 PASS。DCGM Diagnostics 不替代厂商现场诊断,也不直接授予 RMA 资格。DCGM Diagnostics 文档
表 5:温度与功耗阈值,按设备建立基线
H800、A100 的不同板型,以及 4090 的不同厂商设计,都不应共用一组温度和功率上限。先读取设备报告,再对照整机环境要求:
nvidia-smi -q -d TEMPERATURE,POWER,PERFORMANCE
# 核对当前驱动支持哪些细分查询字段
nvidia-smi --help-query-gpu| 监控对象 | 阈值依据 | 可落地的告警与处置方式 |
|---|---|---|
| 机箱入风温度 | 服务器厂商对当前配置的环境要求及 BMC 传感器位置 | 接近或超过允许范围时联动机房与硬件团队;不能仅凭“超过 35°C”排除 GPU / 风扇问题 |
| GPU 温度 | 本卡报告的 Max Operating、Slowdown、Shutdown 等温度信息 | 优先监控温度余量与持续时间;不要把保护温度直接当作正常运行目标 |
| 显存温度 | 设备支持的显存温度及相应限制 | 独立观察;GPU 核心温度正常不代表 HBM / GDDR 温度正常,未提供字段时记录缺项 |
| 热降频 | SW Thermal Slowdown、HW Thermal Slowdown 等原因及持续时间 | 关联风道、散热器、风扇、负载与实际时钟,不能只看温度的单个瞬时值 |
| 功耗与限功率 | 配置的 Power Limit、实际执行的限制、板卡与整机功率预算 | 达到功率上限可能是正常功率管理;结合 SW Power Cap 与业务吞吐判断 |
| 外部供电限制 | HW Power Brake、BMC 的 PSU / 功率预算事件 | 升级整机供电排查;不能写成“超过某个瓦数,BMC 必然拉电压” |
温度和时钟原因的定义见 NVIDIA-SMI 温度与性能说明。若设备只提供 T.Limit 温度余量,应按该字段的语义读取,不能当作绝对摄氏温度。
**一个本地告警策略示例:**设备提供有效的 Max Operating 温度时,可先以“距该温度不超过 5°C,持续 5 分钟”作为预警起点,再根据厂商建议和负载验证调整。这里的 5°C、5 分钟是示例策略,不是 NVIDIA 官方通用阈值;已经发生持续热降频、设备掉线或数据错误时,不应等待预警窗口结束。
低 GPU 利用率、低 Tensor 活动和接近功率上限,也应先与同型号、同任务阶段的基线比较。排查性能下降时,同时看计算、通信、存储、CPU、时钟和散热,避免仅凭一项读数更换硬件。
表 6:什么时候隔离、什么时候升级、什么时候申请返修
停止接单是控制影响的措施;RMA 是依据产品政策和诊断证据做出的返修决定。 两者可以相隔多个排查步骤。
| 观察到的情况 | 一线动作 | 升级 / RMA 判断依据 |
|---|---|---|
| 仅特定应用触发 13/31/43,设备可用,无其他健康异常 | 保存最小复现,按任务容错策略处理受影响作业 | 先由应用团队定位;跨应用或跨版本仍在同一设备复现时,升级驱动和平台调查 |
| 新增不可纠正 ECC,或出现 48/94/95 | 查明错误位置、是否 containment、恢复动作;限制受影响资源使用 | 不能仅凭 volatile 非零判返修;同时核对 DRAM / SRAM 状态、复现情况和厂商政策 |
| 63、remapping pending,未出现 failure | 核对关联事件,按恢复要求安排合适的维护窗口 | pending 不等于修复失败;不使用“63 超过 5 次”或“退役页超过 64”作为跨型号通用门槛 |
| 64、row-remapping failure,或受支持设备的 SRAM threshold exceeded 标志 | 隔离受影响资源并升级供应商诊断 | 这些是重要硬件升级证据;按对应政策由现场诊断确认 RMA 条件 |
| 74/79/119/120,设备或互连不可用,或恢复后继续复现 | 暂停新增调度,保留证据,按要求恢复;重复故障保持隔离 | 排查 GPU、PCIe / NVLink、供电及驱动固件,依据重复性和定位结果决定维修对象 |
| DCGM 某测试 FAIL,或 NVLink 错误持续增长 | 阅读具体测试与链路状态,排除环境、配置和业务干扰 | DCGM FAIL 不自动等于 RMA;没有统计口径和厂商依据时,不设统一的 CRC 1e-9 返修线 |
NVIDIA 对行重映射的 RMA 政策强调 failure 标志及现场诊断验证;SRAM 另有对应标志和条件。不要把旧架构页退役数量直接移植到 A100 / H800 的行重映射判断中。内存 RMA 政策
NVLink 的累计 CRC 错误也不等于 bit error rate:需要明确计数对象、时间窗口、链路流量分母和硬件代际,再按供应商规则解释。4090 不具备 NVLink,相关项应标为不适用。GeForce RTX 4090 官方规格
Kubernetes:cordon 只是停止常规新增调度
确定需要从节点层面阻止新增作业时,可以先执行:
# 替换为已确认的故障节点名称
kubectl cordon NODE_NAMEcordon 不会迁走正在运行的 Pod,也不是设备已经停止使用的证明。后续驱逐、训练 checkpoint、跨节点作业整体退出和 GPU reset,要按业务与集群维护流程协调;单卡可隔离的调度环境,也不必一律扩大为整机下线。Kubernetes 节点维护文档
GPU reset 会影响设备上的工作,并受 MIG、NVLink / NVSwitch、Fabric Manager 和虚拟化方式限制。因此不要把 reset 或节点重启直接绑定到某个 Xid 自动执行。恢复前确认目标设备、相关进程和互连影响,恢复后检查错误状态、执行支持的诊断,再运行代表性工作负载。GPU Reset 能力与限制
升级工单应包含什么
将以下信息随工单一次提交,便于运维、应用和硬件团队对齐现场:
- 时间与身份:带时区的首次 / 最近发生时间、节点名、GPU UUID、PCI 地址、可获得的板卡序列号。
- 软件与任务:OS、内核、驱动、GSP 固件、DCGM / exporter 版本,以及任务 ID、镜像和近期变更。
- 原始证据:完整 Xid 前后文、bug report、BMC / AER、需要时的 Fabric Manager / SXid 日志。
- 影响与处置:受影响的卡、节点、任务,是否隔离,已做过哪些 reset / 重启,以及恢复后是否复现。
- 验证结果:诊断失败项、最小复现、正常设备对照及业务恢复表现;不支持和未执行的项目应明确标记。
九章智算云客户可按实际服务渠道提交上述材料。告警聚合、自动工单和控制台入口以具体部署及交付配置为准,不作为本文对所有环境的统一功能承诺。
一线速查真正需要记住的是:指标异常先关联业务,Xid 先还原上下文,恢复先确认影响范围,返修先准备可复核的证据。
最后更新于
