监控使用说明.md

GPU 机崩溃监控系统(2026-09-03 部署)

目的:复现视频生成时,抓取断电/崩溃前最后时刻的 GPU、系统、内核状态。 针对上次事故教训:整机断电时本地日志瞬间丢失(journald "uncleanly shut down"), 唯一可靠的是实时 UDP 外发——数据在掉电前一秒已到本机。

架构

GPU 机 (192.168.31.25)                      DSH 机 (192.168.31.76)
crash_monitor.sh  ──UDP 9333──▶  crash_monitor_collector.py
  每 2 秒采样:                              监听 0.0.0.0:9333
  · 系统负载 loadavg                        落盘:
  · 内存 total/free/avail                    dl-hub/06-ComfyUI-H3运维记录/crash-monitor/gpu_monitor.log
  · GPU: 温度/功耗/利用率/显存/PCIe gen/width
  · 内核错误行实时转发: Xid/NVRM/panic/Oops/
    BUG/hung_task/soft lockup/thermal/OOM/Killed
  (dmesg -w 有权限则生效,无权限跳过)

组件与位置

组件位置
GPU 机监控脚本GPU 机 /home/zyw/crash_monitor.sh(本地副本 ~/Downloads/crash_monitor_gpu.sh)
本机收集器本机 /home/zyw/Downloads/crash_monitor_collector.py(后台 job bash-3)
数据落盘/home/zyw/Downloads/dl-hub/06-ComfyUI-H3运维记录/crash-monitor/gpu_monitor.log

启停命令

# GPU 机启动(nohup 脱离终端,掉 SSH 也不停)
nohup bash /home/zyw/crash_monitor.sh > /tmp/crash_monitor.out 2>&1 &

# GPU 机停止
bash /home/zyw/crash_monitor.sh stop
# (兜底)pkill -f crash_monitor

# 本机收集器启动(DSH 机)
python3 /home/zyw/Downloads/crash_monitor_collector.py

数据行格式

S|<UTC时间>|load=1m,5m,15m|mem_t=总kB,f=空闲kB,a=可用kB|gpu=温度_功耗W_利用率%_显存MiB_gen_宽度
KERNEL|<UTC时间>|<内核错误行>

示例:S|2026-09-03T07:47:41.918Z|load=0.01,0.04,0.10|mem_t=32653456kB,f=26499676kB,a=29305272kB|gpu=50_10.18_0_154_1_8

解读:GPU 50°C、功耗 10.18W、利用率 0%、显存 154MiB、PCIe gen=1、width=8。 (空闲时 gen=1 正常;满载推理时应看到 gen↑、功耗↑、利用率↑。)

复现流程

  1. 确认 GPU 机监控进程在跑(pgrep -af crash_monitor)+ 本机收集器在跑(job 或 ss -ulnp | grep 9333);
  2. 正常跑一次视频生成(预计 ~20 分钟);
  3. 若再次断电:重启 GPU 机后,本机日志文件里掉电前最后一条记录就是临终数据;
  4. 分析重点:最后若干条 GPU 功耗/温度/利用率趋势、PCIe gen 是否突变、 KERNEL 行有无 Xid/NVRM/panic;
  5. 对照系统日志(journalctl --list-boots、last -x)确认断电时刻。

已知限制


2026-09-03 16:52 复现事故记录(监控首秀,完整捕获)

现象:用户跑生成时 ComfyUI 再次断联,GPU 机第三次整机断电(前两次 15:00:25、本次 16:52:50)。

监控捕获的关键数据(本机日志 gpu_monitor.log,1982 条采样,2s 粒度):

结论:第三次同一模式(满载推理中瞬时断电、无任何软件/内核/温度/链路前兆), 基本锁定 电源侧故障(PSU 保护触发/供电不稳),与 GPU、驱动、PCIe、温度均无关。

建议:优先排查/更换 PSU,检查 12V 供电线与插排接触;考虑 UPS 记录市电事件。


2026-09-03 17:16 重启后诊断(第三次事故后)

现象:第三次整机挂死(16:52:50),但用户观察到显示器仍有信号、操作无响应 → 推翻"断电"结论,确认为内核/驱动硬挂死(机器有电,系统无响应)。WOL 无效 + 显示器有信号 = 机器处于 S0 挂死,非 S5 关机。

重启后检查结果:

修正后的根因方向:三次均为满载推理时瞬间硬挂死、无任何软件/温度/链路前兆、机器有电。 监控数据(临终 100%利用率/180W/72°C/Gen5×8/零错误行)排除了 PCIe 掉线、过热、驱动报错; 结合 PCIe 链路速率异常(本次开机 Gen4 枚举 vs 运维基线 Gen5),高度怀疑显卡供电/接触或 电源轨在满载时不稳定,导致 GPU 驱动/内核死锁(区别于上次仅"掉总线"的轻症,本次为拖死整机)。

后续措施:

  1. 安装 rasdaemon,下次 BERT/CPER 可精确解码;
  2. 建议满载复测 + 监控抓取(若复现,临终数据已能定位);
  3. 考虑 nvidia-smi -pl 限功耗测试(隔离电源 vs 显卡问题);
  4. 检查显卡/供电线物理接触。

2026-09-03 23:29 第四次事故(监控完整捕获死亡瞬间)

现象:用户报告"突然重启了"。监控数据在 23:29:30.953 戛然而止(本机时间)。

死亡瞬间数据(本次监控全程 8327 条采样,2s 粒度):

与前三事故完全同模式:满载推理中瞬间死亡、机器有电(显示器有信号)、零内核告警、 PCIe 链路正常。第 4 次确认:指向电源/供电在满载时的硬件级故障(PSU 保护或电源轨失稳), 非软件、非驱动、非过热、非 PCIe 掉线。

待机器恢复后检查:rasdaemon 数据库(本次已装,若固件写入 BERT/CPER 将可解码具体错误类型)。


2026-09-03 23:29 第四次事故分析结论(监控完整覆盖)

临终数据(23:29:30.953 最后采样):GPU 100%/180W/82°C/显存11GB/PCIe Gen5×8 稳定, 随后数据流戛然而止。本次为rasdaemon 首次在场的事故,结果:

检查项结果
rasdaemon(MCE/内存/PCIe AER/Extlog)全部零错误
BERT 固件记录无(上次有但 Skipped)
内核错误行(2s 粒度监控全程)0 条
journal 最后记录15:25:01 UTC 常规 cron,之后正常日志停止
journalduncleanly shut down(非正常关机)
恢复3 分钟内回到在线(用户侧重启/掉电自恢复)

四次事故共性(结论性):

  1. 全部发生在 GPU 满载推理(~180W 持续)期间;
  2. 2 秒粒度监控无任何前兆(功耗/温度/链路全部正常至最后一条);
  3. 零内核错误(无 Xid/NVRM/panic/OOM/thermal);
  4. rasdaemon 在场仍零 MCE/内存/PCIe 硬件错误 → 排除 CPU/内存/PCIe 硬件故障;
  5. 机器有电但系统死(显示器有信号)= 硬挂死/瞬间断电;
  6. 指向电源侧:GPU 满载时 PSU/供电轨失稳,触发整机掉电或保护。

建议(按优先级):

  1. 更换/测试 PSU(主要怀疑对象;180W GPU + 满载持续时供电失稳);
  2. 检查插排/墙插/12V 供电线接触;
  3. 可试 sudo nvidia-smi -pl 150 限功耗跑一轮,若限功耗后不再死机 → 电源问题实锤;
  4. 考虑 UPS(区分市电闪断与 PSU 自身问题)。

2026-09-05 突破性发现:GPU 掉总线(Xid 79)为最终根因

上报时刻:用户 9/5 报告"突然重启",查询到内核级报错——前几次"零错误瞬间死亡" 其实是 Xid 79 掉总线后驱动直接触发 Xid 154 OS 重启,不留错误记录的假象。

铁证(三次掉总线,全部同款):

9/5 06:48:59  Xid 79, name=nvidia-smi, GPU has fallen off the bus
9/5 10:55:19  Xid 79, GPU has fallen off the bus
9/5 12:26:51  Xid 79, GPU has fallen off the bus  ← 本次上报
9/5 ...       Xid 154, GPU recovery action changed to OS Reboot

结论:非电源、非插座、非过热、非软件 bug —— 这是 8 月修过的 "GPU 掉总线"复发(NVreg_DynamicPowerManagement=0x00 已确认生效, Secure Boot 关闭,无拦截),剩余唯一怀疑:显卡/PCIe 物理接触。

建议(物理排查):

  1. 重新插拔显卡 + 12V 供电线(金手指/插槽接触);
  2. BIOS 检查 PCIe 链路速率设置,可固定 Gen4 求稳;
  3. 有条件换第二条 x16 槽测试;
  4. 若复现,抓 nvidia-bug-report 提交分析。
下载此文件