服务指标
核心定位:建立 LLM 推理服务的完整监控指标体系,给出每个指标的精确数学定义、计算公式、指标间的推导关系,以及异常诊断的决策树。
1. 核心延迟指标
1.1 精确定义
1.2 TTFT 的分解
无 Chunked Prefill 时:
有 Chunked Prefill 时:
1.3 TPOT 的分解
其中 M_KV_step 是每步需要读取的 KV Cache 量,写成公式就是:
2. 吞吐指标
2.1 Token 吞吐
与 Batch Size 的关系:
2.2 请求吞吐
注意:请求吞吐与输出长度分布强相关,不宜用单一值概括。
2.3 有效吞吐(Goodput)
只统计满足 SLO 约束的请求。裸吞吐高但大量违反 SLO 是无意义的。
3. 资源利用率指标
3.1 GPU 计算利用率
3.2 KV Cache 利用率
3.3 Batch 利用率
4. 缓存与驱逐指标
4.1 KV 命中率(Prefix Caching 场景)
4.2 回填率(Refill Rate)
Refill Rate 高说明驱逐策略存在严重误判——被驱逐的 token 很快又被需要。
4.3 其他运维指标
5. 指标间的推导关系
5.1 最大 Batch Size 估算
5.2 吞吐与延迟的关系
由 Little 定律:
5.3 Goodput 与 SLO 的关系
等号当且仅当所有请求都满足 SLO 时成立。
6. 异常诊断决策树
TPOT 升高
Batch Util / KV Util
Batch 过大 → Memory-bound 恶化
减小 Batch 或量化 KV
TTFT 升高
Queue Depth
Prefill 被 Decode 挤压
启用 Chunked Prefill
吞吐高但 TTFT 差
Prefill/Decode 比例
Decode Batch 过大占满资源
设定 Prefill 准入配额
命中率升但 TPOT 差
Refill Rate / Dequant
回迁/反量化抖动
增加回迁预算 / 减少驱逐频率
P99 剧烈抖动
KV Eviction Spike / Comm
驱逐风暴或跨卡通信峰值
预留 KV Buffer / 优化通信
GPU Util 低但 TPOT 高
AI (Arithmetic Intensity)
Memory-bound
增大 Batch / 量化权重
Queue Depth 持续增长
rho(利用率)
服务容量不足
扩容或限流
7. 告警阈值参考
rho_KV
> 80%
> 90%
准备触发驱逐
P99 TTFT
> 0.7 x SLO
> 0.9 x SLO
接近 SLO 上限
OOM Rate
> 0.01%
> 0.1%
调整 Batch 策略
Refill Rate
> 5%
> 15%
优化驱逐策略
Queue Depth
> 2 x B_max
持续增长
扩容或限流
面试一句话
"推理指标必须分层看:延迟看 TTFT + TPOT + P99,吞吐看 Goodput(不是裸吞吐),资源看 KV 利用率和 Batch 利用率,诊断看 Refill Rate 和 Queue Depth。单一指标好不代表系统好,指标之间的推导关系(Little 定律、Roofline)才是面试核心。"
对应源码与阅读顺序
先读 ../notes/serving/formula-to-code-walkthrough.md,把 TTFT、TPOT、Goodput、batch utilization 的定义和调度器行为对上。
再对照 ../src/simulators/serving_metrics.py 的
ttft()、tpot()、goodput()、batch_utilization()、kv_step_bytes(),确认每个指标都是逐公式实现。然后读 ../src/simulators/scheduler.py 的
Request.stage()和step(),理解 decode 优先为何会同时影响 TTFT 和 TPOT。最后跑
python -m pytest tests/test_serving_metrics.py tests/test_scheduler.py -v,把指标和调度逻辑一起验证。
最后更新于