阿姆达尔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
amdahl

阿姆达尔 Gene Amdahl,出生于1922年11月16日,出生在美国南达科他州的弗德鲁,是著名的企业家,创办多家公司。积木创意Amdahl曾经是研究并行处理系统的,1967年Amdahl推导出了固定负载情况下描述并行处理效果的加速公式。

并行公式

P是并行率。若P=1,获取到无穷加速比;

并行理论

定律的理解
本篇要说的是它的一种变形运用。

定义:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。

阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说:要想显著加速整个系统,必须提升全系统大部分的速度。可以再简单些:优化影响最大的部分。

Amdahl-law-faster

建议采用这样的思路来优化系统性能,也可以直接采用公式来量化改进效果。这个公式在操作上十分的简单很实用,可以运用在整个系统分析上,也可以在模块分析上,甚至是一个方法上。

原文地址:https://blog.51cto.com/14573286/2447173

时间: 2024-08-28 13:31:27

阿姆达尔Law对系统性能提升的定义的相关文章

报表系统性能提升之预先计算

报表应用中当数据量较大或计算过程较复杂时,会导致报表数据源准备过慢,从而影响报表性能.这时常常需要事先将报表需要的数据计算好,在呈现时直接引用即可,这样用户在访问报表时就可以迅速地获得响应. 当前的手段及弊端 由于报表在访问时还需要参数,显然不可能把所有参数组合对应的报表数据源都准备好,所以预先计算并不是最终的报表结果,在呈现的时刻仍然要再次进行一些简单的计算(如过滤.分组汇总.排序等),然而也不太可能指望报表呈现时刻由报表工具再完成所有这些运算(报表工具只能完成一部分小数据量的运算),这样就要

Windows系统性能提升方法

看前提醒:在确认没有病毒和流氓软件的前提下,建议优化电脑:以下操作已经在Win7上试验,Win7以的园友自己试验,自己感受,对电脑无害,但操作时请务必小心 设置虚拟内存 虚拟内存最小值物理内存1.5—2倍,最大值为物理内存的2—3倍的固定值,并转移到系统盘以外的其他分区. 虚拟内存设置方法是: 右击计算机—属性--高级系统设置--高级--性能--设置--高级--虚拟内存--更改--在驱动器列表中选中系统盘符--自定义大小--在“初始大小”和“最大值”中设定数值,然后单击“设置”按钮,最后点击“确

去哪儿网大数据流处理系统:如何使用Alluxio(前 Tachyon)实现300倍性能提升

概述 互联网公司同质应用服务竞争日益激烈,业务部门亟需利用线上实时反馈数据辅助决策支持以提高服务水平.Alluxio(前Tachyon)作为一个以内存为中心的虚拟分布式存储系统,在大数据系统性能提升以及生态系统多组件整合的进程中扮演着重要角色.本文将介绍去哪儿网(Qunar)的一个基于Alluxio的实时日志流的处理系统,Alluxio在此系统中重点解决了异地数据存储和访问慢的问题,从而将生产环境中整个流处理流水线的性能总体提高了近10倍,而峰值时甚至达到300倍左右. 目前,去哪儿网的流处理流

Android/Linux 系统性能调优

关于性能优化这是一个比较大的话题,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法.本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充. 在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的<代码优化概要>,这篇文章基本上告诉你--要进行优化,先得找到性能瓶颈! 但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定位和优化无从谈起. 一.系统性能定义 让我们先来说说如何什么是系统性能.这个定义非常关键,如果我们不清楚

你胸大你先说:变量提升

场景引入:一个屋子里,不管进门的顺序如何,如果有胸大腰细的妹子,总是有最先说话的权利. 场景类比:一段代码内,不管声明的顺序如何,显式声明的变量和函数,总是会被提到最前解析. 这次要介绍的同样是js世界很奇怪的现象:变量提升.定义如下: Hoisting is JavaScript's default behavior of moving declarations to the top. 提升是js的默认行为,它把声明(变量或函数)移动到(当前作用域的)最顶 一般计算机语言,有“先声明再使用”的

var的变量提升的底层原理是什么?

原理:JS引擎的工作方式是①先解析代码,获取所有被声明的变量:②然后在运行.也就是专业来说是分为预处理和执行两个阶段. 变量提升的定义:所有变量的声明语句都会被提升到代码头部,这就是变量提升. 例如: console.log(a); var a =1; 以上语句并不会报错,只是提示undefined.实际在js引擎中的运行过程是: var a; console.log(a); a =1; 实际运行表示变量a已声明,但还未赋值. 但是变量提升只对var命令声明的变量有效,如果一个变量不是用var命

认清性能问题

本文翻译自 Thinking Clearly About Performance 这是我三年前读到的一篇关于性能问题的好文,读完后还觉不过瘾,怕理解的不够遂又翻译了一遍,这也是当年我的第一次翻译. 这几年来每次碰到性能问题,我都会想起这篇文章,它并不像很多其他关于性能问题的文章,告诉你利用什么工具怎么去解决性能问题,这类文章更多属于「术」的层面,而术的层面在不同的技术栈会有很不同的选择.而本文则高屋建瓴的帮助读者建立起对性能的正确认识,从而能够获得更全面的视角去看待和思考性能问题.这是「道」的层

性能本质论

摘要 对于开发者.技术管理者.架构师.系统分析师和项目经理来说,创建具备高性能特征的复杂软件都是一件极其困难的事.然而,通过了解一些基本原理,性能问题的解决和预防可以更简单可靠.本文讲述了这些基本原理,涵盖了一系列的目标.术语.工具和决策,综合利用好它们来最大可能的创建一个长期有效的高性能应用.本文的一些例子来自于 Oracle 的经验,但本文的范围并不局限于 Oracle 的产品. 目录 公理化方法 什么是性能? 响应时间 VS. 吞吐量 百分比指标 问题诊断 序列图 性能剖析 阿姆达尔定律

Spark入门实战系列--6.SparkSQL(中)--深入了解运行计划及调优

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.1  运行环境说明 1.1.1 硬软件环境 l  主机操作系统:Windows 64位,双核4线程,主频2.2G,10G内存 l  虚拟软件:VMware® Workstation 9.0.0 build-812388 l  虚拟机操作系统:CentOS6.5 64位,单核 l  虚拟机运行环境: Ø  JDK:1.7.0_55 64位 Ø  Hadoop:2.2.0(需要编译为64位) Ø