知识卡片

利特尔法则:利用率越高,排队越长

结构图卡 · 2257

内容

利特尔法则说明稳定系统里,总处理时间(含等待)等于系统中的项目数量除以处理速率——队列越长,处理一个新项目就要等越久。利用率和平均队列长度的关系是非线性的:把利用率从60%提到80%,平均队列长度从0.6/(1-0.6)=1.5猛增到0.8/(1-0.8)=4,接近三倍;利用率越接近100%,队列长度会趋向无限长。这说明”提高利用率”和”降低处理时间”是两个互相矛盾的目标:想要速度,就必须放弃对100%利用率的追求,主动去找那些不易察觉的队列(排满的日程表、指导会议、邮件收件箱、排队等发布的代码、走流程的报销单)——服务器申请若实际配置只需4小时、排队却要4周,那么把4小时优化到2小时对总速度毫无帮助,因为排队时间已经占了99.4%。

结构图:

flowchart LR
  U1["利用率60%"] --> Q1["平均队列长度≈1.5"]
  U2["利用率80%"] --> Q2["平均队列长度≈4(接近3倍)"]
  U3["利用率→100%"] --> Q3["队列长度→无限"]
  Q1 -.关系非线性.-> Q2
  Q2 -.-> Q3

参考来源

- 位置:《架构师应该知道的37件事》第5章《转型》之"5.7 有谁喜欢排队吗"·"5.7.2 一些排队论知识"与"5.7.3 查找队列"(源文件:_epub-src/OEBPS/Text/chapter005.html) - 结论依据:原文说明"将利用率从60%提高到80%几乎是将平均队列增长了3倍:从0.6/(1-0.6)=1.5到0.8/(1-0.8)=4……如果设置一台服务器实际需要4个小时……流程中的排队时间就会占总时间的99.4%",直接支撑本卡结构图。 - 原始内容:最高利用率(接近100%)会导致队列无限长……提高利用率会赶走你的客户,因为他们已经厌倦了无休止的排队!