阿姆达尔Law对系统性能提升的定义
阿姆达尔定律 = 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,获取到无穷加速比;
定律的理解
本篇要说的是它的一种变形运用。
定义:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。
阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说:要想显著加速整个系统,必须提升全系统大部分的速度。可以再简单些:优化影响最大的部分。
建议采用这样的思路来优化系统性能,也可以直接采用公式来量化改进效果。这个公式在操作上十分的简单很实用,可以运用在整个系统分析上,也可以在模块分析上,甚至是一个方法上。
友链支持
参考博客:codingforspeed.com、ifeve.com
作者:Owen Jia <专注技术架构>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
不用 Notepad++ ,你还有这些更好的选择!
前两天开源文本编辑器 Notepad++ 发布了 7.8.1 版本,然后在该版本中作者对摸黑中国,具体的内容请大家自行百度。而且这已经不是 Notepad++ 第一次这么干了! 对此广大中国的开发者用自己的方式进行了回击: 对一个文本编辑工具而言,有比 Notepad++ 更好的替代工具: Sublime Text (非开源) Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器。 Sublime Text的特色功能: 良好的扩展功能,官方称之为安装包(Package)。 右边没有滚动条,取而代之的是代码缩略图,这个功能非常赞 强大的快捷命令“可以实时搜索到相应的命令、选项、snippet 和 syntex, 按下回车就可以直接执行,减少了查找的麻烦。” 即时的文件切换。 随心所欲的跳转到任意文件的任意位置。 多重选择(Multi-Selection)功能允许在页面中同时存在多个光标。 支持 VIM 模式 支持宏,简单地说就是把操作录制下来或者自己编写命令,然后播放刚才录制的操作或者命令。 更新非常勤快 Visual Studio Code Visual Studio Co...
- 下一篇
Hyperf 发布 v1.1.4 版本,增加 Metric 监控组件
更新内容 本周更新主要为 服务监控,已接入 Prometheus StatsD 和 InfluxDB。 微服务治理的一个核心需求便是服务可观察性。作为微服务的牧羊人,要做到时刻掌握各项服务的健康状态,并非易事。云原生时代这一领域内涌现出了诸多解决方案。本组件对可观察性当中的重要支柱遥测与监控进行了抽象,方便使用者与既有基础设施快速结合,同时避免供应商锁定。 感谢作者 Reasno 直接访问 官网 hyperf.io 或 文档 hyperf.wiki 查看。 新增 #778 Hyperf\Testing\Client 新增 PUT 和 DELETE方法。 #784 新增服务监控组件。 #795 AbstractProcess 增加 restartInterval 参数,允许子进程异常或正常退出后,延迟重启。 #804 Command 增加事件 BeforeHandle AfterHandle 和 FailToHandle。 变更 #793 Pool::getConnectionsInChannel 方法由 protected 改为 public. #811 命令 di:init-prox...
相关文章
文章评论
共有0条评论来说两句吧...