背景

系統架構中對系統性能設計的解決方案之一:“阿姆達爾方案”。書中還有個完全看不懂的公式,理解起來腦仁痛(不懂…)但發現很有價值,便系統的學習一下。

例題試先做一下,帶着疑問點再看定律。

例題:假設某一功能的處理時間為整體系統運行時間的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

架構設計(2)-架構設計原則_系統性能

阿姆達爾 Gene Amdahl,出生於1922年11月16日,出生在美國南達科他州的弗德魯,是著名的企業家,創辦多家公司。Amdahl曾經是研究並行處理系統的,1967年Amdahl推導出了固定負載情況下描述並行處理效果的加速公式。

架構設計(2)-架構設計原則_加速比_02

P是並行率。若P=1,獲取到無窮加速比;

架構設計(2)-架構設計原則_加速比_03

定律的理解

本篇要説的是它的一種變形運用。

定義:系統中對某一部件採用更快執行方式所能獲得的系統性能改進程度,取決於這種執行方式被使用的頻率,或所佔總執行時間的比例。

阿姆達爾定律實際上定義了採取增強(加速)某部分功能處理的措施後可獲得的性能改進或執行時間的加速比。簡單來説:要想顯著加速整個系統,必須提升全系統大部分的速度。可以再簡單些:優化影響最大的部分

建議採用這樣的思路來優化系統性能,也可以直接採用公式來量化改進效果。這個公式在操作上十分的簡單很實用,可以運用在整個系統分析上,也可以在模塊分析上,甚至是一個方法


作者:Owen Jia