尖刺与均值无关
偶发的延迟尖刺对平均延迟影响很小,但用户对尾部的感知非常强烈。排查的做法是把尖刺放到统一时间轴上找相关性:首 token 延迟的尖刺多指向长输入与预填充挤占,逐 token 延迟的尖刺则指向显存带宽、卡间通信与降频。先分类再查,比笼统盯着延迟曲线有效得多。
基本信息
| 适用平台 | 自托管推理服务配合显卡监控 |
|---|---|
| 关键指标 | 首 token 延迟与逐 token 延迟的分位数曲线 |
| 常用工具 | 显卡状态查询、监控看板、引擎指标端点 |
| 记录要求 | 记下尖刺出现的时刻与当时的并发、输入长度 |
排查顺序
- 先分类:首 token 延迟尖刺还是逐 token 延迟尖刺,两者根因方向不同
- 查邻居:同卡是否有其他任务,同机是否有高 IO 任务在跑
- 查环境:温度、功耗墙与降频原因,逐项排除
- 查流量:突发长请求与突发总量,对照队列与水位曲线
- 对照变更:把尖刺与发布、扩缩容、批量任务的时间点叠在一起看
降频与负载证据
降频与负载证据
nvidia-smi --query-gpu=clocks_throttle_reasons.active --format=csv
nvidia-smi --query-gpu=temperature.gpu,power.draw,clocks.sm --format=csv -l 5
nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv -l 5 # 与延迟曲线对时间尖刺类型对照
| 尖刺类型 | 根因方向 | 优先核对 |
|---|---|---|
| 首 token 尖刺 | 长输入带来的预填充挤占 | 输入长度分布与队列长度 |
| 逐 token 尖刺 | 显存带宽、卡间通信与降频 | 降频原因与卡间拓扑 |
| 周期性尖刺 | 定时任务、日志切割、缓存回收 | 同机定时任务与磁盘写入 |
| 偶发无规律 | 邻居任务或外部流量突刺 | 同卡任务与入口流量 |
把尖刺与变更时间线叠在一起看:很多看起来随机的尖刺,都始于某次发布或某个新调用方上线。
分位数比平均值可靠:P95 与 P99 同图对比,才能判断是尾部变差还是整体变慢。
尖刺排查要留证据:把当时的显卡查询输出、并发与输入长度分布一并记下,否则几分钟后现场就没了。