如何提高系统性能--Amdahl定律

Gene Amdahl,计算领域的早期先锋之一,对提升系统某一部分性能所带来的效果做出了简单却有见地的观察。这个观察被称为Amdahl定律(Amdahl’s law)。

该定律的主要思想是,

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

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

Tnew = (1-a)Told + (aTold)/k = Told[(1-a) +a/k]

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

这就是Amdahl定律的主要观点—要想显著加速整个系统,必须提升全系统中相当大的部分的速度。

表示相对性能

性能提升最好的表示方法就是用比例的形式Told/Tnew,其中,Told为原始系统所需时间,Tnew为修改后的系统所需时间。

如果有所改进,则比值应大于1。我们用后缀“X”来表示比例,因此,“2.2X”读作“2.2倍”,表示相对变化更传统的方法是用百分比,这种方法适用于变化小的情况,但其定义是模糊的。应该等于100●(Told- Tnew)/Tnew,还是100●(Told- Tnew)/Told,还是其他的值?此外,它对较大的变化也没有太大意义。与简单地说性能提升2. 2X相比,“性能提升了120%”更难理解。

通过两个练习理解性能的提升比值。

假设你是个卡车司机, 要将土豆从爱达荷州的Boise运送到明尼苏达州的Minneapolis,全程2500公里。在限速范围内,你估计平均速度为100公里/小时,整个行程需要25个小时。

A.你听到新闻说蒙大拿州刚刚取消了限速,这使得行程中有1500公里卡车的速度可以为150公里/小时。那么这对整个行程的加速比是多少?

B.你可以在www. fasttrucks. com网站上为自己的卡车买个新的涡轮增压器。网站现货供应各种型号,不过速度越快,价格越高。如果想要让整个行程的加速比为1.67X,那么你必须以多快的速度通过蒙大拿州?

练习题:
公司的市场部向你的客户承诺,下一个版本的软件性能将改进2X。这项任务被分配给你。你已经确认只有80%的系统能够被改进,那么,这部分需要被改进多少(即k取何值)才能达到整体性能目标?

在这里插入图片描述

Amdahl定律-一个有趣的特殊情况是考虑k趋向于∞时的效果。这就意味着,我们可以取系统的某一部分将其加速到一个点,在这个点上,这部分花费的时间可以忽略不计。
于是我们得到
在这里插入图片描述
举个例子,如果60%的系统能够加速到不花时间的程度,我们获得的净加速比将仍只有1/0.4=2.5X。
Amdahl定律描述了改善任何过程的一般原则。除了可以用在加速计算机系统方面之外,它还可以用在公司试图降低刀片制造成本,或学生想要提高自己的绩点平均值等方面。
也许它在计算机世界里是最有意义的,在这里我们常常把性能提升2倍或更高的比例因子。这么高的比例因子只有通过优化系统的大部分组件才能获得。

猜你喜欢

转载自blog.csdn.net/qq_42707739/article/details/105396180