多服务台与资源池化

本页目录

两台服务台接收同样总流量,共享一条等待队列通常比随机各排一队更能利用空闲资源。池化减少“这边排队、那边空闲”的机会;它不会把两个 10 ms 的服务台变成一个 5 ms 的服务台。

M/M/c 的状态依赖能力

假设总到达为 Poisson、每台独立指数服务且速率为 ,一个 FCFS 公共队列,无放弃、无容量上限。系统内有 个请求时,总完成速率为 。

记提供负荷 ,每台利用率 。稳态要求 。由相邻状态平衡得到:

到达者必须等待的概率是系统内至少有 个请求,即 Erlang C:

等待尾部为 。总时间还要加上自身服务,通常不能直接把 当作总时间的指数参数。

相同资源下比较池化与拆分

两台各 /s、总 /s,则 ,,,池化平均等待约 17.78 ms、系统时间 27.78 ms。

若每个到达独立等概率随机选择一台,Poisson 分流得到两个到达率 80/s 的 M/M/1,每个平均等待 40 ms、系统时间 50 ms。总硬件相同,等待差异来自闲忙协调。

正在呈现知识画面
多服务台与资源池化 · 实验

每台μ=100/s、指数服务,总到达λ=cμρ。共享FCFS队列与独立均匀随机拆分比较;改变c会同步改变总到达率。保留相同每台利用率和总能力,不含锁竞争。

先保持两台、改变 ,再改变台数。实验在改变 时同时按 改变总负载,研究的是相同每台利用率下的规模效应;它不是固定外部流量的扩容实验。 时两条曲线重合,可作为边界核对。

池化有工程条件

共同队列必须能及时派工,服务台应可互换,任务不能因数据局部性或资源型号而任意失配。共享队列的锁争用、跨机通信和缓存失效不在 M/M/c 中。随机拆分只是比较基准,最短队列、最少连接、工作窃取并不等价于随机路由。

无等待区的电话线路模型使用 Erlang B;忙时直接丢失,与 Erlang C 的“忙时继续等”不同。用户会放弃时可研究 Erlang A;服务时长一般分布则需 M/G/c 的近似或仿真。不要把不同模型名称视为公式的可互换别名。

自检

  1. 为什么不能把两台 /s 的服务台直接代入单台 /s?
参考思路

单个请求在两台系统中仍需平均 10 ms,且空系统来一个请求时仅一台服务。单台 200/s 则每个请求平均只需 5 ms;状态为 1 时的完成率就已经不同,因而整个时延分布也不同。

  1. 有 8 个工作线程,数据库却只允许 2 个并行操作,M/M/8 是否合理?
参考思路

只有线程是可独立提供相同服务的真实瓶颈资源时才合理。若主要时间在争用两个数据库槽位,应单独建立这个两台资源模型,或建立含线程与数据库的网络,再测量交互影响。

延伸

NPTEL 多服务台讲义以状态相关完成率推导 Erlang C。其 offered load 记号与本文不同;本文始终用 、。