XMBSMDSJ

2026

< Back to index

扩展性

怎么看软件系统是否可扩展?观察当增加更多资源的时候,系统性能的变化。当我们采集足够的样本,我们通常可以观察到一些模式。这些模式从计算资源(进程数量)/处理能力两个维度描绘了系统性能的曲线。

Amdahl’s Law

\(C(N) = N/(1 + \alpha(N-1))\) 系统性能的增量随着规模减小

Universal Scalability Law

\[C(N) = N / (1 + \alpha(N-1) + \beta(N-1))\]

类似,但是考虑了一致性的影响,系数为 $\beta$

队列系统

一些软件系统可以被建模为一个队列,使用这个模型我们可以预测系统在不同负载下的响应时间。磁盘就是一个非常经典的队列系统,我们通过监控磁盘的利用率,可以快速估算出是否磁盘 IO 成为了系统性能瓶颈。

队列理论是研究队列系统的数学方法。

Little’s Law

\[L = \lambda W\]

队列理论能研究很多问题,例如

Kendall’s notation

队列系统的行为归因于三个因素

简称 A/S/m

M/D/1

\[r = \frac{s(2-\rho)}{2(1-\rho)}\]

如果服务时间为 1ms,在系统利用率到达 60% 时,响应时间就会慢两倍。而达到 80% 时,会变成三倍。