Amdahl定律及木桶原理

首先的一个问题就是,这个怎么读啊???对于我这蹩脚的英语来说真是一脸懵逼。赶紧百度下:阿姆达尔定律,是由Gene Amdal 在1967年提出。阿姆达尔定律定义了穿行系统并行化后加速比的计算公式和理论上限。

加速比 = 优化前的系统耗时/优化后的系统耗时

    加速比越高说明你的优化越明显。在这个地方还有另外一个公式:

 

 
<script type="math/tex; mode=display" id="MathJax-Element-15">SpeedUp\le\frac{1}{F + \frac{1-F}{N}}</script>
SpeedUp:加速比
F:系统内必须串行化的程序比重
N:CPU处理器数量

 

    F的意思我解释下:比如说一个功能总共有6个步骤:
这里写图片描述
    其中,白色的为必须串行的,绿色的为可以优化并行化的,那么其串行化比重:F=4/6=0.67

Amdahl定律的应用

    
    举个例子吧,跟上边一样,每个步骤耗时100ms,其中只有步骤二和步骤四可以进行优化。
这里写图片描述
    假设现在有两个处理器可以同时工作。那么优化后步骤二和步骤四的时间则变为50ms,整体的时间则由原来的600ms,降低到500ms
这里写图片描述

    这种况下的加速比:600/500=1.2
    但是其实这种优化也是有极限的,因为只有步骤二和步骤四可以优化,那么这两个步骤优化的极限就是无限接近0,整体的优化后的耗时无限接近400ms,也就是说在这种情况下的加速比的极限是 600/400 = 1.5

    也可以根据上边的公式得出:

 

 
<script type="math/tex; mode=display" id="MathJax-Element-16">SpeedUp\le\frac{1}{F + \frac{1-F}{N}}</script>

 

    当N趋于无穷大的时候,加速比=1/F,这就是优化的极限。由此可见,为了提高系统的性能,只提高CPU的数量不一定能起到有效的作用。需要从根本上修改系统的串行行为。提高系统内可优化模块的比重,在此基础上,合理增加处理器的数量,才能以最小的投入,得到最大的加速比。

木桶原理

    
    我觉得这一点也可以用“短板理论”来解释:

这里写图片描述

    一只木桶盛水的多少,并不取决于桶壁上最高的那块木块,而是取决于桶壁上最短的那块。
    决定系统性能的关键因素有那么几点:内存资源、CPU资源、磁盘I/O,那么系统的总体性能是取决于当前最慢的磁盘I/O速度,而不是内存和CPU。这种情况下,只有提高磁盘I/O速度才能对系统的整体性能进行优化。我觉得这一点跟阿姆达尔定律有相同之处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值