首页/AI/大模型部署与运维速查/GPU 利用率偏低的排查顺序
推理环境与 GPU50 条

GPU 利用率偏低的排查顺序

服务端 GPU 利用率偏低常见原因:批太小、请求稀疏、CPU 侧预处理或分词瓶颈、采样环节占用、以及网关限流排队;按请求链路逐层定位效率更高。

利用率偏低怎么排查

服务端 GPU 利用率偏低,常见原因有:批太小、请求本身稀疏、CPU 侧预处理或分词成为瓶颈、采样与后处理占用,以及网关限流导致的排队。按请求链路逐层定位比盯着利用率数字有效率:请求有没有进来、有没有在排队、批大小是否偏小、CPU 是否跟不上、有没有被降频。

基本信息

常见原因批太小、请求稀疏、CPU 预处理瓶颈、采样与后处理占用、网关限流排队
观测工具整卡与进程级滚动监控、Python 侧热点分析、服务与网关指标
判断方法用较长窗口的利用率对照请求速率,而不是看瞬时值
正常现象请求间隙的低利用率属于常态
关联因素时钟降频会让利用率看起来正常而吞吐偏低

排查顺序

  • 第一层:请求有没有进来——对网关与入口日志核对请求速率
  • 第二层:是否在排队——看等待请求数与网关侧排队时长
  • 第三层:批大小是否偏小——并发不足时每步能塞进去的请求很少
  • 第四层:CPU 侧是否瓶颈——预处理、分词与后处理跟不上会让 GPU 周期性空转
  • 第五层:是否被降频——功耗与温度触发的降频会让吞吐低于预期
  • 第六层:采样与输出侧开销——长输出场景下采样与文本处理也会拖慢整体节奏

现场观察与热点定位

现场观察与热点定位
# 整卡与进程级滚动观察:利用率是否呈周期性空转
nvidia-smi dmon -s um -d 2
nvidia-smi pmon -o T

# Python 侧热点定位:确认时间花在预处理、采样还是推理调用上
py-spy top --pid <服务 PID>

# 服务侧对照:等待请求数是否长期为零
curl -s http://127.0.0.1:8000/metrics | grep -E 'num_requests_waiting|num_requests_running'

现象与验证方法

现象可能原因验证方法
利用率低但有排队排队发生在链路其他位置查网关日志与限流配置
利用率低且请求稀疏流量本身不足对照请求速率与并发
利用率低但延迟高CPU 预处理瓶颈或降频看热点分析与降频原因
利用率忽高忽低批大小随流量波动看运行中请求数曲线
利用率天然随流量波动,判断要用较长时间的窗口与请求速率对照,不要用瞬时值下结论,否则容易误判成服务有问题。
排查顺序的实用写法:先看队列,再看输入长度,最后才看模型侧算子;把顺序固定下来,值班时不必每次重新想。

易错点

  • 只盯瞬时 0% 利用率:请求间隙的波谷属正常现象,要结合请求速率与服务指标判断
  • 一看到利用率低就加并发:若瓶颈在 CPU 侧,加并发只会让延迟进一步恶化
  • 忽略预处理与分词:CPU 跟不上时 GPU 会周期性空转,表现为利用率上不去但卡也没闲
  • 不看降频:时钟被压低时利用率数字看着正常,实际吞吐明显偏低

数据来源与参考

  • NVIDIA nvidia-smi 文档(docs.nvidia.com/deploy/nvidia-smi)
  • vLLM 官方文档:Production Metrics(docs.vllm.ai)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌