性能调优(一)----Amdahl定律及木桶原理

简介: 什么是Amdahl定律?          首先的一个问题就是,这个怎么读啊???对于我这蹩脚的英语来说真是一脸懵逼。
什么是Amdahl定律?

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

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

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

SpeedUp1F+1FN

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

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

SpeedUp1F+1FN

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

木桶原理

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

这里写图片描述

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

相关文章
|
27天前
|
移动开发 网络协议 Shell
最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)(一)
最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)
29 0
|
4月前
|
分布式计算 算法 中间件
终于有架构大牛把分布式系统概念讲明白了,竟然用了足足800页
10年来,随着网络技术的发展、计算机应用的深入、分布式系统构建技术的日益成熟,分布式系统逐渐深入到人们的日常活动,并渗透到社会、经济、文化生活的各个方面。现今,分布式系统作为主流的软件系统,已成为人们工作、学习和生活中不可或缺的一部分。
|
6月前
|
设计模式 架构师 Java
深扒!用6部分讲完Java性能调优:多线程+设计模式+数据库
Java性能调优 Java性能调优,是一个老生常谈的话题。可能有些人觉得没用,一些细小的地方没有好修改的,改与不改对于代码的运行效率有什么影响呢? Java性能调优不单单是学一门编程语言那么简单,没有办法通过直线式的思维去掌握并运用,对架构师的技术和深度都是有较高的要求的。互联网的时代,一个简单的系统囊括了应用程序、数据库、操作系统、网络等很多技术,如果线上一旦出现什么问题的话,可能就要去协调多方面的组件去进行优化,这又将是一个问题。
50 0
深扒!用6部分讲完Java性能调优:多线程+设计模式+数据库
|
6月前
|
运维 监控 Java
03-揭秘大厂性能方案的奥秘!(下)
03-揭秘大厂性能方案的奥秘!
39 0
|
6月前
|
运维 监控 架构师
03-揭秘大厂性能方案的奥秘!(上)
03-揭秘大厂性能方案的奥秘!
50 0
|
9月前
|
缓存 运维 算法
三十一、 套路篇:磁盘 I/O 性能优化的几个思路
三十一、 套路篇:磁盘 I/O 性能优化的几个思路
251 0
三十一、 套路篇:磁盘 I/O 性能优化的几个思路
|
10月前
|
设计模式 SQL 数据库
《数据库系统原理》第一遍阅读
又是一年自考,总是听师哥师姐说,自考第一遍不过,第二遍再学习的时候感觉会不一样。很开心我有了一次重学《数据库系统原理》的机会,果然就像师哥师姐所说的,我收获到了知识之外的东西。第二遍学习,我体会到的不仅仅是自己的那份从容和淡定,更感受到了大脑自动编织知识网的神奇。
|
网络协议 测试技术
loadrunner 场景设计-学习笔记之性能误区
loadrunner 场景设计-学习笔记之性能误区
58 0
|
SQL 缓存 监控
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)
108 0