故障排查硬件可观测性

GPU 利用率 97%,功耗只有 10 瓦

2026-10-03 · PM Parker · 阅读约 7 分钟

我的双 Thor 推理服务,正常解码速度是每秒 23 到 25 个 token。

8 月 31 日下午,它掉到了 19.7、10.5、5.3、6.3、4.4,来回跳。

我打开监控看 GPU:利用率 97-98%。

显卡忙得团团转。再看功耗:10 到 15 瓦。

满载应该是几十瓦的机器,10 瓦,意味着它基本什么都没干。

利用率说它在拼命干活,功耗说它在空转。这两个指标必有一个在撒谎。

事情是怎么恶化的

往前倒一天,8 月 30 日就有苗头:偶发的双态慢速,掉到 4-9 tok/s,重启一次就自愈。当时没当回事。

8 月 31 日下午变成持续慢速。15:56 那次 QA 还跑出过 23.85 tok/s 的正常成绩,之后没有任何参数改动,速度就开始来回抽风。

也就是说,这不是配置变更引起的问题。排查思路得换。

常识排查清单,全走完了

我把能想到的都排了一遍,每项都有实测依据:

排查项结论
服务配置无变化,参数与正常时段完全一致
MGBE 互联链路25G 全双工,链路状态 UP
投机解码接受率 1.53,正常范围
功耗模式两台都确认 nvpmodel MAXN(最大性能档)
分布式计数counter 1:1,无计数异常

全绿。和那次博客宕机一样,监控说什么都没发生。

这时候唯一提供信息的指标,反而是最不起眼的那个:功耗。GPU 利用率 97% 但只有 10 瓦,翻译过来是 GPU 在空转忙,kernel 被调度执行了,但执行效率极低。

利用率这个指标只统计"GPU 有没有活干",不统计"活干得怎么样"。它是最容易被当成健康证明、也最会骗人的一个。

更大的坑:重启了三遍,其实一遍都没成功

按常规,这种状态该重启。我重启了,不止一次,双机容器重启做了三轮。

没用。

当时我的结论是"重启救不了"。后来才发现,这个结论是错的,因为那些重启根本就没有执行成功。

这台 Thor 的系统重启命令,在脚本的非交互环境里跑 sudo 会静默失败:没有终端可输密码,命令看起来发出去了,实际什么都没发生。

真正有效的姿势分两步:先用密码管道给 sudo -S 缓存凭据,再执行 shutdown -r +0。看到"Reboot scheduled"的返回、连接被切断,才算真的在重启。

两台机器先后整机复位,各花三分钟左右。容器没有自启动,跑了一遍编排脚本把它们按顺序拉起来。

然后,24.0、24.3、24.2、23.1。

速度稳稳地回到了正常区间,抖动消失。

沉淀成 SOP

根因还没定,怀疑方向是 Thor 的动态调频或者 MGBE 固件层的某种状态卡死,需要断电级复位才能清。但排查路径已经固化下来了,下次再遇到,十分钟之内能定位:

第一步,看功耗。nvidia-smi 里利用率高但功耗低,就是空转忙,别再调参了。

第二步,连续跑三次基准看抖动形态,区分偶发和持续。

第三步,整机复位,并且确认重启真的执行了。容器重启和系统重启是两回事,"重启命令发出去"和"重启发生了"也是两回事。

这件事给我最大的提醒是:利用率告诉你 GPU 有没有活干,功耗告诉你活干得实不实。只用一个指标判断硬件健康,就是给谎言留了门。

另外,"重启无效"这四个字以后我会谨慎使用。说出它之前,先证明重启真的发生过。

你的机器有没有过"看着很忙、实际空转"的状态?评论区对个暗号。


← 返回博客列表 · 相关阅读:慢的三层真相 · 双机部署实录