GPU 利用率 97%,功耗只有 10 瓦
我的双 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 有没有活干,功耗告诉你活干得实不实。只用一个指标判断硬件健康,就是给谎言留了门。
另外,"重启无效"这四个字以后我会谨慎使用。说出它之前,先证明重启真的发生过。
你的机器有没有过"看着很忙、实际空转"的状态?评论区对个暗号。