阿姆达尔定律 = 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
阿姆达尔 Gene Amdahl,出生于1922年11月16日,出生在美国南达科他州的弗德鲁,是著名的企业家,创办多家公司。Amdahl曾经是研究并行处理系统的,1967年Amdahl推导出了固定负载情况下描述并行处理效果的加速公式。
P是并行率。若P=1,获取到无穷加速比;
定律的理解
本篇说的是它的一种变形运用。
定义:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。
阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说:要想显著加速整个系统,必须提升全系统大部分的速度。可以再简单些:优化影响最大的部分。
建议采用这样的思路来优化系统性能,也可以直接采用公式来量化改进效果。这个公式在操作上十分的简单很实用,可以运用在整个系统分析上,也可以在模块分析上,甚至是一个方法上。