架构师都知道“阿姆达尔Law”对系统性能提升的定义

Owen Jia 2019年10月28日 416次浏览

阿姆达尔定律 = Amdahl's Law,本篇重点是介绍该定律。

背景

系统架构中对系统性能设计的解决方案之一:“阿姆达尔方案”。书中还有个完全看不懂的公式,理解起来脑仁痛(不懂...)但发现很有价值,便系统的学习一下。

例题试先做一下,带着疑问点再看定律。

例题:假设某一功能的处理时间为整体系统运行时间的60%,若使该功能的处理速度提高至原来的5倍,则根据阿姆达尔定律,整个系统的处理速度可提高至原来的多少倍?

定理公式

优化前系统总耗时To(old),优化后系统总耗时Tn(new),加速比S=To/Tn。

Speedup = timeOld / timeNew

详细公式:

S = 1 / ((1-C) + C/S)

S(speedup),加速比。

C,原系统中能够改进的部分占总部分的比例,也可以说能够改进部分运行时间占总系统运行时间的比例,比如:75%。

S,改进后系统的提升比例,比如:5倍。

举例分解

上面的例子细化一下:程序A中子程序B的运行时间占A的60%,子程序B优化提升了5倍速度,那么程序A将多少?

程序A初始假设速度可为1,如下:

1/((1-0.6)+0.6/5) = 1/(0.4+0.12) = 1/0.52 = 1.923

Amdahl

ahmdal

阿姆达尔 Gene Amdahl,出生于1922年11月16日,出生在美国南达科他州的弗德鲁,是著名的企业家,创办多家公司。Amdahl曾经是研究并行处理系统的,1967年Amdahl推导出了固定负载情况下描述并行处理效果的加速公式。

image.png

P是并行率。若P=1,获取到无穷加速比;

并行理论

定律的理解

本篇说的是它的一种变形运用。

定义:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。

阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说:要想显著加速整个系统,必须提升全系统大部分的速度。可以再简单些:优化影响最大的部分

ahmadal-law-faster

建议采用这样的思路来优化系统性能,也可以直接采用公式来量化改进效果。这个公式在操作上十分的简单很实用,可以运用在整个系统分析上,也可以在模块分析上,甚至是一个方法上。

友链支持

百度 Gene Amdahl

百度 Amdahl's Law

jenkov.com defined the law

参考博客:codingforspeed.comifeve.com