计算机性能分析的三个模型【1】
- 一、瓶颈分析(Bottleneck Analysis)
- 二、利特尔法则(Little's Law)【2】
- 三、M/M/1 Queue
- Reference
一、瓶颈分析(Bottleneck Analysis)
瓶颈分析可以帮我们更好地定位导致性能差的最主要问题根源,从而可以让我们更精确地给出性能提升的解决方案。
例如,如果瓶颈是吞吐量太低,那么通过增加缓存或者降低请求延迟的解决方案是没有太大作用的。
那么针对吞吐量分析可以利用以下两条规则:
1、并行的子系统的吞吐量是所有子系统最大吞吐量的总和;
2、串行的子系统的吞吐量是所有子系统中最小吞吐量。
以下给出一个例子:
根据图中可以看出,该系统的最大吞吐量为Min(9GB/s + (4+3)GB/s + 6GB/s + 10GB/s) = 6GB/s
。所以针对这个吞吐量瓶颈分析,可以精确定位到我们需要进行吞吐量提升的子系统位置。
二、利特尔法则(Little’s Law)【2】
通过这个定律可以反映吞吐量和延迟之间的关系,任务到达的速率为R,延迟为L,系统在这个延迟时间内可以处理的任务数量T。
如图所示,是Little’s Law的公式模型。即系统中平均任务数量T = 平均延迟L * 任务平均到达速率R
这个定律的美妙之处在于它可以通过任意两个参数的计算得到第三个参数值,解决了某个参数可能比较难以获取的问题。
例子:已知每天有200个请求到达(R),并且有10,000个请求在系统中等待(T),请求系统延迟时间。
答:L = 10,000 / 200 = 50天
为了提升性能(降低延迟),则可以通过提升请求到达速率,例如增加到每天到达1,000个请求数量;或者是提升系统处理请求的效率,即提升吞吐量。
三、M/M/1 Queue
对于利特尔定律,只是给出了一个黑盒结果,并没有具体详细地描述出三者之间的trade-off问题,比如通过哪个参数提升性能会更好。而M/M/1 Queue可以向我们展示这三者之间的权衡。
排队理论(Queue Theory【3】)应用马尔可夫性质,即任务到达的时间独立于先前任务到达的时间,不受先前任务的影响。
根据上图,我们将任务到达的速率记为R,平均等待排队时间Q,平均服务时间S,平均延迟时间L = Q + S
如图所示,其中x轴中的吞吐量throughput = R*S
,R为请求到达速率,S为平均每个请求服务时间,吞吐量为单位时间内系统处理的请求数量,因此是R乘以S。y轴是归一化平均延迟,用latency = L/S
表示。由于L = S + Q
,因此当L为1时表示无队列等待时间。再根据马尔科夫链可以得到L/S = 1/(1-R*S)
,即 y = 1/(1-x)
。
因此,根据图中的曲线趋势,我们可以看到,高吞吐量会导致高延迟。吞吐量降低时,队列等待时间短,延迟降低。
Reference
1.Three Other Models of Computer System Performance:https://arxiv.org/pdf/1901.02926
2.https://fisherp.scripts.mit.edu/wordpress/wp-content/uploads/2015/11/ContentServer.pdf
3.L. Kleinrock, Queueing systems, volume 1: Theory. Wiley, New York, 1975.