延迟分位数:平均值会隐藏慢请求
多数请求很快但少数请求很慢时,平均延迟不能充分描述体验。生成式应用还常需要区分首 token 延迟与完整响应延迟。
问题从哪里出现
多数请求很快但少数请求很慢时,平均延迟不能充分描述体验。生成式应用还常需要区分首 token 延迟与完整响应延迟。
理解核心机制
分位数从排序后的样本描述尾部位置。下面明确采用最近秩法,不把不同统计库的插值方法混为一谈,并同时报告样本数。
动手做一个小实验
Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。
import math
samples_ms = [80, 90, 100, 110, 120, 130, 150, 200, 400, 1200]
def percentile(values, q):
if not values or not 0 < q <= 1:
raise ValueError("nonempty input and 0 < q <= 1 required")
ordered = sorted(values)
return ordered[math.ceil(q * len(ordered)) - 1]
assert percentile(samples_ms, 0.95) == 1200
print(len(samples_ms), percentile(samples_ms, 0.5), percentile(samples_ms, 0.95))适用边界与常见误区
这里只是合成延迟,不是服务器测量。十条样本无法稳定估计尾部;还应记录超时、失败、并发和输入输出长度,避免只统计成功请求。
继续练习
加入超时样本并明确其处理方式,再按短输出与长输出分组,比较总体和分组后的延迟分布。