计算机与信息 · 10/14
排队论Queueing Theory
任务到达或耗时有波动时,负荷越接近上限,等待越会陡增。
2021年10月,洛杉矶港外等待卸货的集装箱船,把美国供应链的拥堵摆到了海面上。码头仍在作业,但进口货量激增,卡车和仓库也接货吃紧。一批货还没运走,下一批船已经赶来,延误越积越多。10月13日,美国总统拜登在白宫宣布,洛杉矶港将转向全天候作业,以增加处理能力。码头工人继续忙,货主却继续等:每天能处理多少货,与一批货要等多久,是两件不同的事。
为什么成立
随机到来的任务会把等待拉长
一个平均每分钟办完一笔业务的柜台,能让顾客平均等上十九分钟。设想顾客以固定平均速率、彼此独立地随机到达,即泊松过程。办事时长彼此独立、服从指数分布,且与到达过程独立。队伍不限长,顾客先来先办、不弃队。按这个单柜台模型计算:
| 每小时平均到客数 | 利用率 | 平均排队时间 |
|---|---|---|
| 48人 | 80% | 4分钟 |
| 54人 | 90% | 9分钟 |
| 57人 | 95% | 19分钟 |
剩余能力越少,积压越难清掉
利用率是到达速度与处理能力之比:。是平均每小时到客数,是柜台持续忙碌时平均每小时办完的笔数。在的长期稳定状态下,平均排队时间为:
白话说,平均办事时间乘上“已用能力与剩余能力之比”,就是平均等待;等待不含办事本身。利用率从90%升到95%,这个倍数就从9变成19。
突然多来几个人,队伍只能靠剩余能力慢慢消化。柜台越忙,越难在下一波顾客到来前清空队伍。偶发的长业务还会让后面的人一起等。空闲时段无法存起来,留给拥挤时段使用。
出处
排队论起源于电话通信中的应用概率研究。1909年,丹麦数学家阿格纳·厄朗研究哥本哈根的电话业务,以实际话务数据分析随机呼叫与线路占用。1961年,约翰·金曼提出单服务台等待时间的近似公式,把负荷、波动和等待连在一起,后来广用于计算机性能和生产管理。
换个领域看
技术
服务器越忙越慢
高利用率会放大在线服务的排队延迟。2013年,谷歌工程师杰夫·迪恩与路易斯·巴罗索在《The Tail at Scale》中讨论了这一现象:请求争用处理器等资源,少数慢请求拖长响应。给服务器留出余量,能帮助缩短用户等待;只看每次计算耗时,会漏掉计算前的排队。
个人生活
日程留出空档
日程排满时,一件临时任务就能让后面的安排接连延期。假设你是独立设计师,把每天八小时都承诺给客户,修改意见却随时会来。多出一小时返工,就要挤掉下一项工作。每天少承诺一小时,让突发任务有地方落下,能减少客户等稿的时间。
投资
满产未必利好
接单增长能否变成利润,要看企业还剩多少处理能力。假设你评估一家代工企业,现有订单已占可用工时的95%,管理层承诺再多接一成订单。若设备与工艺不变,所需工时就会超过产能,交期持续拉长。估值时应把扩产成本、交付时间和违约损失放进预测。
遇事时问自己
- 任务实际到达的速度,与持续忙碌时能完成的速度,各是多少?
- 客户或任务会不会集中到来,有没有少数任务特别耗时?
- 排队发生在哪个具体环节,它还剩多少能力来消化积压?
- 能否通过预约错峰、缩短耗时或增加处理能力,让队伍及时清空?
- 我愿意花多少成本保留空闲能力,换取多短的等待时间?
边界与误用
等待陡增的前提,是任务到达或处理耗时有波动。若任务严格按时到达、耗时固定且排程恰好衔接,满负荷也能没有等待。单柜台公式不能直接套到多柜台、优先插队或顾客会放弃的系统,这些规则会改变等候结果。上述随机模型里,长期到达速度达到或超过处理能力,就没有有限的稳态平均等待。最常见的误用是把80%当成通用安全线:应按实际波动、服务台数量和等待目标留余量。
练一练
一家公司的采购申请由一位专员逐份审核。各部门原本在工作日内陆续提交,现在准备改为每天下午三点统一提交。申请总量、每份审核耗时和专员工作时间都不变,专员此前没有频繁切换任务的问题。
这项调整最可能带来什么结果?
连续处理看起来更高效。但这里没有减少切换成本,审核速度也没提高,只是让更多申请同时开始等。
同一批申请只能依次审核,后面的申请要等前面的完成。下午三点以前的空闲,不能搬到三点以后使用。
全天能否处理完,确实关系到积压会不会持续增长。但即使当天能全部完成,集中到来的申请也可能等得更久。
总量和能力没变,确实容易让人想到等待也不变。但集中提交会让申请同时争用专员,平均数藏住了这段拥挤。
等待既取决于处理能力,也取决于任务何时到来。集中提交增加了到达的波动;即使全天仍有余量,一批申请也可能在提交后排起长队。
投资人考察两家车辆检测站,每家只有一个检测工位。两站都以相同的规律随机到车,平均每小时两辆,先来先检,客户不弃队。甲站每辆检测固定用20分钟;乙站一半用5分钟,一半用35分钟,耗时彼此独立,也与到车无关。两站营业时间和收费相同。
关于客户等待,哪种判断最站得住?
两站的平均耗时和负荷确实相同。但乙站耗时波动更大,平均值没有反映长检测对后面车辆的影响。
两站平均处理能力相同,乙站的检测耗时却更不稳定。耗时的波动会增加平均等待,不能只凭平均产能判断客户体验。
乙站的短检测确实能较快腾出工位。但一次长检测可能挡住多辆后来车,短检测的优势不足以抵消这种影响。
处理能力高于到车量,说明队伍有机会消退。但车辆随机到来,仍会出现几辆车集中到场、暂时争用工位的情况。
两站平均都能每小时检测三辆,利用率相同,但等待并不相同。乙站偶发的长检测会阻挡后续车辆,说明评估服务能力时,平均耗时之外还要看耗时波动。
小区有一间共享琴房,每次预约固定30分钟。住户都准点到场、准点离开,无需清场,也没有临时来客。周六的预约连续排满四小时,前一人离开时后一人正好进入。一位住户认为,使用率达到100%,等待一定会越来越长。
对这位住户的判断,哪种回应最站得住?
满负荷确实让系统难以消化突发延误。但本例没有突发延误,每次使用都恰好接上,不能直接推出积压。
留余量常能缓解等待,80%也容易记住。但它不是通用标准;本例的固定安排可以连续衔接,无需靠这一比例防止等待。
末尾的空档确实可能帮助消化已有积压。但本例没有产生积压,而且后来的空闲也不能让先前已经等过的人少等。
这里没有到达或使用时长的波动,每次预约又恰好衔接。满负荷本身不会凭空产生队伍。
高负荷放大等待,需要到达或处理耗时存在波动。这里两者都固定,预约又恰好衔接,因此满负荷也能没有等待;若出现迟到或超时,才需要重新考虑余量。