SYSTEMS NOTES阅读地图
9个主要章节
4张图片与图示
1组对照与手算表

从一个具体请求或状态变化出发,追踪数据流与方法成立的条件。

章节速览9 节 · 展开选择

令牌桶控制一段时间内允许进入多少工作,并发与背压控制执行和等待的数量。观察一个运行中的服务,还需要把这些数量与耗时连接起来:平均有多少请求留在系统里,单位时间离开多少,每个请求停留多久?

Little定律给出三者的均值关系,但它最容易被误用在统计口径上。本篇从四个请求的完整时间线出发,先证明一个有限轨迹的面积恒等式,再说明何时可以使用长期关系。它是一项流量核算关系,单凭这个等式不能预测改并发上限以后系统会怎样。 全文参数是合成教学数据,不是站点或模型服务的性能实测。

先画系统边界排队和执行是否都算在里面?

入场、离场和计数单位必须固定,才能把平均人数、吞吐与停留时间放进同一个式子。

再核对观察窗口窗外进入、窗内未完成的请求不能消失

面积按时间累积,完成记录按对象累积;短窗口里两者可能对应不同批请求。

定义边界,比记住字母更重要

本文把“已接纳,尚未离开”的请求算在系统内,等待与执行均包含。第i个请求进入时刻为aᵢ,开始执行时刻为sᵢ,离开时刻为dᵢ;要求aᵢ≤sᵢ≤dᵢ。停留时间Wᵢ=dᵢ−aᵢ,排队时间Wqᵢ=sᵢ−aᵢ,执行时间Sᵢ=dᵢ−sᵢ。

N(t)是在时刻t留在边界内的请求数量。它包含等待与执行,与“获得信号量、正在执行的协程数”不同。MIT的性能讲义也明确提醒其系统内计数包含正在接受服务的对象,见文献1。

L|时间平均在途数
对N(t)沿时间积分后除以观察长度,单位为请求。忙时长短必须进入权重,不能只平均几个事件采样点。
λ|有效流量
在匹配的长期口径下,每秒经过边界的请求数。入口外被拒绝的工作不属于本边界,不能直接计入已接纳请求的吞吐。
W|对象平均停留时间
每个匹配请求从进入到离开的总时间,单位s。它包含排队,且应与L、λ描述同一类对象。

四个请求,先把完整账本算清

考虑一个串行执行者,不抢占、按下面给定次序执行,观察区间为0至8秒,开始和结束时系统均为空。这个样例使用顺序服务以便手算,后面的面积恒等式并不依赖先来先服务。

请求进入a,s开始s,s离开d,s等待Wq,s执行S,s停留W,s
A002022
B125134
C356213
D468224
A执行0到2,B等待1到2执行2到5,C等待3到5执行5到6,D等待4到6执行6到8;总停留面积13请求秒
图1|原创合成时间线,横坐标以秒计,色条长度按时间比例绘制;浅色为等待,深色为执行。查看原图

四个停留时间之和为13秒,对象平均W=13/4=3.25秒。八秒离开四个请求,吞吐X=4/8=0.5请求/秒。若计算平均在途数,还不能直接把某个时刻的并发拿来相乘,而要计算N(t)曲线下的面积。

0—1秒有1个请求,1—2秒有2个,2—3秒有1个,3—4秒有2个,4—5秒有3个,5—6秒有2个,6—8秒有1个。面积为1+2+1+2+3+2+2=13请求·秒,时间平均L=13/8=1.625请求。于是XW=0.5×3.25=1.625,与面积结果相同。

一个轨迹,沿两个方向累计同一块面积

每个请求从进入到离开,给N(t)贡献一个高度为1的矩形。沿时间方向把所有矩形叠起来得到N(t),沿请求方向把宽度相加得到总停留时间。两种累计对应同一块面积。

公式L1|有限窗口的精确面积账本
∫ᵤᵛ N(t)dt = Σᵢ |[aᵢ,dᵢ) ∩ [u,v)|

求和覆盖所有与窗口相交的请求,区间长度以s计,面积单位请求·s。对有限条记录且aᵢ≤dᵢ,这是逐条指示函数相加的恒等式,不要求平稳、泊松到达或指数服务时间。端点单个时刻不改变积分。

若观察完整的一批请求,所有请求均在窗口内进入并离开,设数量m、窗口长度T,则面积等于ΣWᵢ。再把两边除以T,把右侧写成(m/T)(ΣWᵢ/m),便得到有限完整账本中的L=XW。这个证明没有把短窗口的完成请求均值,自动等同于所有在途请求的窗口贡献。

在长期稳定流量的常用表述中,若匹配的长期平均存在、有限,有正的有效流量,且窗口边界影响相对窗口长度消失,就得到下面的Little关系。原论文出版元信息见文献2;本文不把有限样例当作对原论文一般随机过程条件的完整证明。

公式L2|口径匹配的长期均值关系
L = λW

L为时间平均系统内数量,λ为匹配对象的长期有效流量,W为对象平均总停留时间。单位:请求=(请求/s)×s。需要一致边界与可用的长期平均,不能把不断积压时的短窗入口速率与任意完成均值强行组合。

队列与执行可以拆,但不能偷换边界

在四请求样例中,总排队时间为5秒,总执行时间为8秒;因此Wq=1.25秒、S=2秒,总停留W=Wq+S=3.25秒。队列面积为5请求·秒,执行面积为8请求·秒,各除以8秒,得到平均等待数0.625与平均执行数1。

公式L3|同一批流量的阶段拆分
W = Wq + S
L = Lq + Ls;Lq = λWq;Ls = λS

要求各阶段描述匹配对象且相应平均关系适用。本例所有四个请求都经过等待/执行阶段,等待可以为0。若有排队过期或提前退出,不能只用最终成功执行请求的吞吐解释全部等待者。

这里平均执行数1,是因为整个0—8秒执行者没有空闲。它不是“一次最多只能有一个在途请求”的证明;系统内最多曾有3个,平均有1.625个。把队列边界移到执行区外,L和W都要相应改变,不能只改其中一个。

自检1:执行并发上限为1,为什么平均在途数还能大于1?

本文边界包含等待与执行。执行区始终最多1个,但队列里还可等待其他请求。四请求样例的总在途平均为1.625,执行平均为1,两者统计对象不同。

截取两秒到五秒,完成均值为什么对不上

现在只观察[2,5]这三秒。B在窗内贡献3秒,C贡献2秒,D贡献1秒,总面积6请求·秒,所以L=6/3=2。若只统计离开时刻落在(2,5]的请求,则只有B,它从1秒进入到5秒离开,总停留4秒。用完成吞吐1/3乘4,得到4/3,与2不同。

公式没有失效,使用者漏了窗口边界。B的完整停留包含窗前1秒,不能全算作窗内面积;C和D虽未在窗口内完成,却已经占用了2秒和1秒。修正后是4−1+2+1=6请求·秒。B之外的未完成请求,不能因为还没出现在完成日志里就从在途曲线中消失。

窗口2到5秒,B贡献3秒、C贡献2秒、D贡献1秒,共6请求秒;只使用完成的B全程4秒会遗漏窗口修正
图2|原创窗口裁剪图。虚线外部分不计入窗口面积;C、D在窗内未完成,仍贡献在途面积。查看原图

测量中常见的陷阱是:延迟面板来自“本分钟完成的请求”,并发面板却来自“本分钟所有在途请求”,入口速率又来自“本分钟所有尝试”,最后还把拒绝与重试混在里面。即使每个面板分别正确,三者也未必能直接相乘。长期窗口能减轻某些边界影响,但不能修复对象定义不一致。

平均数量要按持续时间加权

本例各事件间隔起点的N值为1、2、1、2、3、2、1。直接算它们的算术平均得到12/7≈1.714286,而正确时间平均是13/8=1.625。最后一个N=1的区间持续两秒,其他区间各一秒,平均事件点会少给它一份权重。

公式L4|分段常量计数的时间平均
L̂ = Σⱼ Nⱼ·Δtⱼ / Σⱼ Δtⱼ

Δtⱼ是每段持续时间,必须非负且总时长为正,Nⱼ为该段在途数。此估计对完整事件轨迹精确;固定频率采样是另一种近似,不能混称为已精确积分。

自检2:只把每次到达或完成后的并发值取平均,够不够?

不够。事件间隔长短可能不同,直接平均事件值不是时间平均。应保存每个计数状态持续多久,再用数量乘时长求面积,或明确说明采样近似方法。

关系式不等于容量预测或尾延迟保证

如果一个口径稳定的系统吞吐为200请求/秒,平均总停留50ms,则平均在途为10请求。目标若是同样吞吐下平均10ms,对应的平均在途是2;但不能据此声称“把执行并发上限调成2,响应就会变10ms”。并发限制可能改变吞吐、排队、批处理效率与资源争用,这些因果关系需要额外模型或测量。

若每秒接纳120个请求,但只能离开100个,且不丢弃也不提前退出,积压会持续增长。在这种持续状态下,不能假设系统有一个固定有限的长期L与W,再把120硬塞进稳定均值公式。入口限流、排队上限和超时语义仍要由背压等机制落实。

均值关系也不会决定尾部。100个请求都耗时2秒,与99个耗时1秒、1个耗时101秒,平均都为2秒,但长请求的体验完全不同。需要研究分位数、超时和服务目标时,必须保留分布信息,不能把W当作p99。

自检3:排队超时的请求没有成功,能否从全部在途账本里删去?

不能。它进入后直到退出前实际占用了在途面积。若边界统计全部接纳请求,超时退出也必须有离开记录;只统计成功吞吐与成功延迟,会与全部在途数量不匹配。

自检4:平均延迟相同,是否就说明p99和超时率也相同?

不是。均值没有确定整个分布。少量极长请求可以与大量短请求形成同一个平均值,应另外核对分位数、超时比例和请求类别。

把监控字段变成一份计量契约

为每条进入与离开记录保留匹配标识、时刻、结果和边界名称。重试若产生新的执行尝试,就同时记录业务请求标识与尝试标识;不能把尝试吞吐乘业务端到端延迟。入口外被拒绝的请求,可另建入口层账本,而不应悄悄混进已接纳系统。

检查数据时,先验证退出不早于进入,再重建分段N(t),保留窗前存量和窗后未完成项。短窗先用L1对账;只有在长期条件和口径允许时,再使用L2概括。内部验证用事件扫描、逐时间单位计数与请求区间裁剪三种路径核对合成轨迹,不对实际服务吞吐作预测。

参考文献与适用位置

  1. MIT 6.826,Principles of Computer Systems,2000,Handout 10:Performance,PDF第5页。 官方讲义。核对平衡流量下的均值关系,以及系统内计数包含正在服务对象的口径;本篇时间线、有限窗口和事件加权例子独立构造。返回L2。
  2. John D. C. Little,A Proof for the Queuing Formula: L=λW,Operations Research,9(3),383–387,1961。 出版社DOI入口。核对作者、题名、卷期页与历史来源;未声称取得受限原论文全文,也未把本文有限轨迹证明替代其一般条件。
  3. 本站服务控制路线。 令牌桶处理速率和突发,并发与背压处理有界准入,超时与安全重放区分尝试和业务结果。它们为本文边界例子提供衔接,不作为Little定律的原始来源。返回面积账本。