什么是amdahl定律

  Amdahl定律是计算机科学中非常重要的定律。它定义了串行系统并行化后的加速比的计算公式和理论上限。

  加速比定义:
    加速比 = 优化前系统耗时 / 优化后系统耗时

当我们对系统的某个部分进行优化加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。

若系统执行某应用程序需要时间为T,假设系统某部分所需执行时间与该时间的比例为a,而该部分性能提升比例为k。即该部分初始所需时间为aT,现在所需时间为(aT)/k。因此,总的执行时间应为

        (1-a)T+(aT)/k=T[(1-a)+a/k]

由此,可以计算加速比

        S=1/[(1-a)+a/k]

该部分的系统整体占比和优化提升程度共同决定了优化效果

其中,如果想要显著加速整个系统,必须提升全系统中更多部分的速度

意义

如果不考虑到在系统中的占比a,只优化其中部分性能提升效果较好的部分

那么对于整体的优化效果,往往是不尽人意的

举个例子,考虑这样一-种情况, 系统的某个部分初始耗时比例为60%(a = 0.6),其加速比例因子为3(k=3)。则我们可以获得的加速比为1/[0.4+0.6/3]=1.67倍。虽然我们对系统的一个主要部分做出了重大改进,但是获得的系统加速比却明显小于这部分的加速比。

.

另外,

当k趋于无穷的时候

我们将系统的某一部分加速到一个点,在这个点上花费的时间可以忽略不计
可以得到

S=1/(1-a)

举个例子,如果60%的系统能够加速到不花时间的程度,我们获得的净加速比仍将只有2.5

我们可以在图中很直观的感受到变化
image.png
因此,在思考一个系统的整体运行效果的时候,局部个体的优先级往往低于整体系统

应用

Amdahl定律描述了改善任何过程的般原则。 除了可以用在加速计算机系统方面之外,它还可以用在公司试图降低制造成本,或学生想要提高自己的绩点平均值等方面。但是也许它在计算机世界里是最有意义的,在这里我们常把性能提升2倍或更高的比例因子。这么高的比例因子只有通过优化系统的大部分组件才能获得。

从负载的角度分析,主要分析如何优化代码,加快单台机器的响应时间;
从资源的角度分析,则是在定义服务的扩展性,增加多少资源,能够是系统容量有多大的提升。

image.png


wric
10 声望3 粉丝