效能测量与分析.ppt_第1页
效能测量与分析.ppt_第2页
效能测量与分析.ppt_第3页
效能测量与分析.ppt_第4页
效能测量与分析.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,Chapter 10,效能測量與分析,2,第十章 目標,瞭解電腦效能的測量方式。 能夠敘述常見的評效程式及其限制。 熟悉可供改進CPU及磁碟效能的因素。,3,10.1 導論,本章所提出的概念將會幫助你瞭解各種電腦效能的測量方式。 在你購買大型系統,或者試著改進現有系統效能時,你將會用到這些觀念。 我們將會討論一些影響系統效能的因素,還包括一些你可以用來改進程式效能的小方法。,4,10.2 基本的電腦效能公式,在我們討論RISC與CISC時,基本電腦效能公式提供了很大的幫助: 為了達到較佳效能,RISC機器降低了每個指令的週期數,而CISC機器則降低了每個程式的指令數。,5,10.2 基本的電

2、腦效能公式,我們也已經學過CPU效能並非是影響整體系統效能的單一因素。記憶體與I/O效能也同樣重要。 Amdahls 法則告訴我們系統效能的改進在於加快某一元件,此元件不但是取決於元件本身的增速,而且還包括元件負擔整體系統工作量的多寡:,6,10.2 基本的電腦效能公式,簡而言之,Amdahls 法則告訴我們如何使一般的情況變快。 因此,假如我們的系統以CPU為主(CPU bound),我們則需要使CPU變得更快。 一個以記憶體為主( memory bound) 的系統則需要在記憶體管理上做改進。 I/O為主( I/O bound)的系統效能會隨著I/O系統的升級而改進。,當然,在系統的某個部

3、分改進效能問題,會暴露系統另一部份的缺點!,7,10.3 數學上的準備,系統效能的測量取決於個人的觀點 一個電腦使用者最常關心的是反應時間(response time):系統完成一個工作需要花多長的時間? 系統管理者通常較在乎生產量(throughput):在反應時間受到影響之前,有多少工作可以同時被系統處理? 這兩個觀點具有相關性:假如系統完成一個工作花費k秒,則它的生產量為每秒1/k個這樣的工作。,8,10.3 數學上的準備,在比較量個系統的效能時,我們會測量每個系統做相同工作所花費的時間。 若系統A與系統B執行相同的程式,我們會說系統A比系統B快n倍,如果: 系統A是系統B的x% 快,如

4、果:,9,10.3 數學上的準備,假設我們有兩輛剛跑完10哩競速的賽車,A車用了3分鐘,B車用了4分鐘。 利用我們的公式,A車是B車的1.25倍快,而且A車比B車快25%:,10,10.3 數學上的準備,在我們評量系統效能時,我們會對於一個特定工作量下的預期效能特別有興趣。 我們會利用統計學上的工具,此工具為核心趨勢測量(measure of central tendency)。 大家最為熟悉的一個是算術平均數(arithmetic mean )或者稱為平均,可用下列公式表示:,11,10.3 數學上的準備,如果資料斜偏或散亂,算術平均數可能會遭到誤用 考慮下表中所給予的系統執行時間,效能上的

5、差異在簡單的平均之下將會被隱藏起來。,12,10.3 數學上的準備,如果執行頻率(預期的工作量)已知,那麼加權平均(weighted average)便可以被充分利用。 系統A的加權平均為: 50 0.5 + 200 0.3 + 250 0.1 + 400 0.05 + 5000 0.05 = 380.,13,10.3 數學上的準備,然而,工作量會隨著時間改變。 一個對與某工作量做最佳化的系統,在工作量改變時,可能會變得很糟糕,就如同下面所顯示的一樣:,14,10.3 數學上的準備,比較兩個或多個系統的相對效能時,幾何平均數(geometric mean) 是較合適的核心趨勢測量工具 它是n

6、個測量值乘積的n次方根。 不同於算術平均,幾何平均不會給予我們對實際系統效能的期望。它所提供的僅僅是一個比較的工具。,15,10.3 數學上的準備,幾何平均通常使用經過正規化(normalize)後的比例,此比例是待測系統相對於對照機器的比例。 我們執行了下表中的計算。,16,10.3 數學上的準備,當另一個系統被使用來作為對照機器,我們可以得到不同的數字。,17,10.3 數學上的準備,正規化後的幾何平均真正的用處在於不論是那個系統作為對照機器,所得到的幾何平均值的比例都會一致。 這也就是說,在系統A對系統B,系統B對系統C,系統A對系統C的幾何平均比例都是相同的,不論哪一部機器被選作對照機

7、器。,18,10.3 數學上的準備,我們使用系統B與系統C做為對照機器之後的結果顯示在下表。 我們可以得到 1.6733/1 = 2.4258/1.4497.,19,10.3 數學上的準備,使用幾何平均來展示機器效能的問題是所有的執行時間對計算結果的貢獻程度都相同。 因此,縮短一個小程式10%的執行時間,與縮短一個大程式10%的執行時間將會得到相同的效果。 縮短程式一般較容易做最佳化,但在真實世界中,我們想要縮短的是冗長程式的執行時間 同樣地,若幾何平均不成比例,如某個系統幾何平均比另一個小50%,則不代表它就是兩倍快!,20,10.3 數學上的準備,調和平均數(harmonic mean)

8、以比率的方式提供我們在執行時間上的比較。 調和平均數提供我們計算系統生產量的數學期望值,以及比較系統與系統元件的相對生產量。 為了找出調和平均數我們將比率的倒數相加,並且以比例的個數相除: H = n (1/x1+1/x2+1/x3+ . . . + 1/xn),21,10.3 數學上的準備,調和平均數在兩個地方優於幾何平均數。 首先,它是機器行為的合適預測者。 因此他比簡單比較效能更有用 其次,最慢的比率在結果上會有較大的影響,所以改進最慢的效能會帶來較佳的結果。(通常這就是我們想要的) 主要的缺點是幾何平均在選擇對照機器上較為靈敏。,22,10.3 數學上的準備,下面的圖表整理了在什麼情況

9、下用什麼效能測量較為適當。,23,10.3 數學上的準備,在確定購買電腦時,客觀的電腦效能測量通常會是主要依據 對於企業級系統來說,這樣的過程是複雜的,而且對於錯誤決定的決果通常很嚴重。 不幸地,在電腦銷售上,其對於高明行銷的依賴通常與良好效能一樣多 謹慎的購買者將會瞭解客觀的效能數據如何被偏頗使用來做為銷售電腦時的優點。,24,10.3 數學上的準備,最常見的欺騙方法包括: 選擇性的統計:只引用有利的結果而刪除其他結果。 引用最高效能數值,而忽略平均狀況 在比較的效能資料上使用含糊的字眼,像是幾乎、接近、超過與低於。 使用不適當的統計方法或將蘋果與橘子相比。 暗示你應該購買某一特定系統,因為

10、每個人都買了類似的系統。,更多的例子可以在商業及貿易雜誌廣告上找到。,25,10.4 標準效能評量法,標準效能測量(Performance benchmarking)是一種客觀測量兩個系統效能的科學。 價格效能比(Price-performance ratios) 可從標準效能評量中被衍生得到。 這個方法麻煩的地方是沒有一個通用的電腦效能測量方式可以告訴你在最少金額下,那個系統將可以最快速地執行你的應用程式(使用最少的壁鐘時間)。,26,10.4 標準效能評量法,許多人將CPU速度誤認為是效能的同義詞。 CPU速度的測量包括了週期時間(MHz, and GHz)以及每秒百萬指令數(MIPS)。

11、 系統A在1.4GHz運作,系統B在900MHz運作,若我們說系統A比系統B快,只有在系統A與系統B的ISAs相同時才成立。 不同的ISAs,在相同的壁鐘時間量下,兩個系統可能獲得相同結果。,27,10.4 標準效能評量法,不考慮時脈速度與ISA的情況下描述效能,在過去幾年已經發展出了一些綜合性評效程式(synthetic benchmarks)。 綜合性評效程式是一種除了產生效能數值外別無其他目的的程式。 早期的綜合性評效程式Whetstone, Dhrystone, 與 Linpack 是較小且較容易被最佳化的程式。 從一開始,這個事實便限制了這些程式的有用性。 由於這些程式太小,以致於沒

12、辦法用來評量現今系統的效能。,28,10.4 標準效能評量法,在1988年,標準效能評鑑組織( Standard Performance Evaluation Corporation, SPEC) 被建立用來滿足客觀標準評效程式的需求。 SPEC 製造標準評效程式集給各種電腦與電腦應用程式。 他們最廣為人知的標準評效程式集便是SPEC CPU 標準評效程式集。 SPEC2000標準評效程式集包含了兩個部分, CINT2000,用來測量整數算術運算,以及CFP2000,用來測量浮點數運算。,29,10.4 標準效能評量法,SPEC 標準評效程式由一些核心程式所組成。 這些程式為需要解決特定問題的

13、核心程序的程式。 對於解決問題沒有貢獻的運作會被摒除在外,例如I/O運作。 CINT2000 由12 個應用程式所組成(11 written in C and one in C+); CFP2000 則由14 個應用程式所組成(6 FORTRAN 77, 4 FORTRAN 90, and 4 C)。,這些程式的列表可以在第519-520頁中的表10.7中找到,30,10.4 標準效能評量法,在大多數的系統中,會需要兩個24小時的整天來執行SPEC CPU2000 標準評效程式集。 在完成之後,每個核心的執行時間(如標準評效程式集所回報)會被除以在Sun Ultra 10 執行相同核心所需要的

14、時間。 最後的結果為所有執行時間的幾何平均值 製造商會發表兩組數值:峰值(peak number)跟基值(base number),分別代表著具有編譯器最佳化與不具有編譯器最佳化。,31,10.4 標準效能評量法,SPEC CPU 標準評效程式僅僅評估了CPU效能。 當高傳輸量做為整體系統效能的主要考量下,交易處理委員會(Transaction Performance Council, TPC)的標準評效程式則較為合適。 目前的版本為TPC-C 標準評效程式。 TPC-C 使用終端模擬軟體來建立倉儲商業的特定交易模式。,32,10.4 標準效能評量法,TPC-C單位值為每秒鐘完成的新訂單交易數

15、 (tpmC),其中其他交易的混合也同時在相同的系統中執行。 tpmC 包含了價格效能比,這是由系統的成本除以產能單位所得到。 系統的價格包括了所有客戶預期會付出的硬體、軟體以及維護費。,33,10.4 標準效能評量法,交易處理委員會也設計標準評效程式給決策支援系統(提供給類似資料探勘之類的應用)與以網站為主的電子商業系統。 在測試中每個所使用的元件必須是在報告被公布時,可在市場上購得的。 測試的結果必須由經過TPC認證的獨立審查單位所審核。,34,10.4 標準效能評量法,TPC標準評效程式為一種模擬工具。 他們在改變條件下,可以用來最佳化系統效能,這些條件是在一般情況下不常發生的。 其他種

16、類的模擬工具可以被設計來評估已存在的系統效能,或者是塑造不存在的系統效能模型。 在建造系統模擬工具時,一個最大的挑戰是如何產生真正的工作量。,35,10.4 標準效能評量法,為了決定特定系統元件的工作量,有時會利用系統記錄(system traces)。 系統記錄使用硬體或軟體來探測感興趣的元件動作,以收集詳細的行為資訊。 因為由探測器所收集的資料非常龐大,他們通常指記錄幾秒鐘的資料。 在產生統計上有意義模型的過程中,需要好幾個記錄才夠。,36,10.4 標準效能評量法,設計一個模擬器時,必須建立一份清楚定義模擬器目的的文件。 一個模型若太過詳細,在撰寫上則太耗費成本與時間。 相反地,模擬器若

17、太過簡單而忽略掉關鍵因素則會導致錯誤的結果。 模擬器必須被檢驗以確認是否可以達到他原先所設定的目的:簡單的模擬器比複雜的模擬器更容易檢驗。,37,10.5 CPU 效能最佳化,CPU 最佳化包含了許多已經在前面章節討論過的主題。 CPU 最佳化包含了像是管線化、平行執行單元、與整合浮點單元等主題。 我們尚未討論的兩個CPU最佳化重點:分支最佳化與使用者程式碼最佳化。 這兩個方法都可能重大地影響效能。,38,10.5 CPU 效能最佳化,我們知道當管線維持在飽滿的狀態下,管線可以提供顯著的執行加速。 條件分支指令是一種管線危障(hazard),其可能會導致管線被沖洗(flush)。 其他的危障還

18、包括衝突、資料相依以及記憶體存取延遲。 延後分支(Delayed branching) 提供了一種處理分支危障的方法。 利用延後分支,一個或多個跟隨於條件分支之後的指令都會被送到管線預先執行,不論分支所產生出來的結果為何。,39,10.5 CPU 效能最佳化,設定延後分支的任務大部分由編譯器負責。 編譯器可以用許多方式選擇要放置在耽擱時槽內的指令。 第一個選擇是不管分支是否會發生,都會繼續執行的有用指令。 其他的可能包括了若分支發生則會執行,若分支不發生也不會有任何損害的指令。 延後分支的優點是硬體成本較低。,40,10.5 CPU 效能最佳化,分支預測(Branch prediction)是

19、另一種將分支代價降低的方法。 分支預測藉由猜測下個可能被執行的指令來避免管線暫停。 這就是所謂的推測執行(speculative execution)。 分支預測的技術依照不同的分支型態而有所改變。If/then/else,迴圈控制,以及子程式分支都有不同的執行特性。,41,10.5 CPU 效能最佳化,預測可以由很多種方式產生: 固定預測(fixed predictions)不會隨著時間而改變預測的內容。 真實預測(true predictions) 預測分支會發生或不會發生。 動態預測(Dynamic prediction) 使用過去的對於分支及其輸出的資訊進行預測。 靜態預測(Stati

20、c prediction) 不使用歷史資訊。,42,10.5 CPU 效能最佳化,當固定預測認為分支不會發生,則程式的正常執行順序就會被進行。 然而,此程序會在預測發生時同時進行。 如果預測是正確的,則預先處理的資訊會被刪除並且繼續執行。 若預測是錯誤的,則推測程序被刪除,並且預先處理的資訊會被用來執行正確的路徑。,43,10.5 CPU 效能最佳化,當固定預測的假設是分支會發生時,在推測程序開始前狀態資訊會被儲存。 若預測正確,則已經儲存的資訊會被刪除。 若預測不正確,則推測程序被刪除,且先前儲存的資訊會被回存到執行環境中,那時適合的路徑就可以被進行。,44,10.5 CPU 效能最佳化,動

21、態預測利用高速的分支預測緩衝器(branch prediction buffer)來結合指令及其歷史紀錄。 此緩衝器藉由分支指令的低位址以及額外用來記錄分支最近是否發生的位元做為索引。 一位元動態預測(One-bit dynamic prediction)使用單一位元記錄上一次碰到的分支是否發生。 二位元預測(Two-bit branch prediction) 保留先前分支發生的歷史記錄以及分支發生的機率。,45,10.5 CPU 效能最佳化,早期的分支預測製作使用的是靜態分支預測。 幾乎最新的處理器(包括Pentium, PowerPC, UltraSparc, and Motorola

22、68060) 都是使用二位元動態分支預測。 某些超純量處理器架構把分支預測當作是使用者的選項。 許多系統為了使生產量提高,而利用專屬電路來製作分支預測。,46,10.5 CPU 效能最佳化,最好的硬體與編譯器不可能與那些專精於有效演算法與編碼設計技術的人有一樣的能力。 人們可以看見將要在機器上執行的程式內容。 舉例來說,一個好的程式設計師將會用以行為主的順序去存取一個以行為主的陣列。 在這節結束時,我們會提供給你一些小技巧來達到程式效能最佳化。,47,10.5 CPU 效能最佳化,運算計數(Operation counting)能夠增強程式效能。 利用這個方法,你可以測量在一個迴圈當中執行的指

23、令型態數目,然後測定每個指令型態所需要的機器週期數。 這個想法是在給定的架構下,提供指令型態最佳混和比例。 巢狀迴圈表現出了一些令人感興趣的最佳化機會。,48,10.5 CPU 效能最佳化,迴圈展開(Loop unrolling)是一個擴展迴圈的過程,使得每一個新的疊代(iteration)都包含有幾個原來的重複主體,因而使得每個迴圈疊代會執行更多的運算。例如: 變成,for (i = 1; i = 30; i+=3) ai = ai + bi * c; ai+1 = ai+1 + bi+1 * c; ai+2 = ai+2 + bi+2 * c; ,for (i = 1; i = 30; i

24、+) ai = ai + bi * c;,49,10.5 CPU 效能最佳化,迴圈融合(Loop fusion)結合了使用相同資料項目的迴圈,可能會改進快取記憶體的效能。例如: 變為,for (i = 0; i N; i+) Ci = Ai + Bi; for (i = 0; i N; i+) Di = Ei + Ci;,for (i = 0; i N; i+) Ci = Ai + Bi; Di = Ei + Ci; ,50,10.5 CPU 效能最佳化,迴圈分裂(Loop fission)把大的迴圈切成較小的片段,以降低資料相依性及資源衝突。 迴圈分裂如同所知的迴圈剝解(loop peeli

25、ng)從一個迴圈中移除開始與結束敘述的程序。例如:,A1 = 0; for (i = 2; i N; i+) Ai = Ai + 8; AN = N;,for (i = 1; i N+1; i+) if (i=1) Ai = 0; else if (i = N) Ai = N; else Ai = Ai + 8; ,變成,51,10.5 CPU 效能最佳化,課文中列出了一些改進程式效能的基本法則。 當你把這些基本法則用在經常執行的程式碼片段中時,你會發現最佳化的成果將得到很大的報酬。 簡單地說,試著上常用的情況加快。.,52,10.6 磁碟效能,最佳化的磁碟效能對系統產能而言是相當重要的。 磁

26、碟裝置是最慢的記憶體元件,既使以最快的存取時間來說,都比主記憶體存取時間要長一百萬倍。 當虛擬記憶體分頁被使用時,慢速的磁碟系統將會阻塞處理程序,並且拖慢所有程式的效能。 低CPU使用率實際上可能來自於I/O子系統,因為CPU花了很多時間在等待I/O動作,而非運算上。,53,10.6 磁碟效能,磁碟使用率(Disk utilization)測量磁碟忙碌於服務I/O請求的時間百分比。 磁碟使用率給了一個機率,此機率為當令一個I/O請求到達磁碟服務佇列時,磁碟正在忙碌的機率。 磁碟使用率是以磁碟速度以及請求到達服務佇列的速率來測定。以數學方式表示: 使用率=請求到達的速率磁碟提供服務的速率 其中到

27、達的速率為每秒幾個請求,而磁碟提供服務的速率為每秒幾個I/O動作(IOPS),54,10.6 磁碟效能,在佇列中一個請求所花的時間與磁碟服務時間及磁碟忙碌機率有直接相關,而與磁碟空閒的機率間接相關。 以公式化表示: 在佇列中的時間 = (服務時間使用率) (1 使用率) 佇列時間與使用率(由上面的公式)的重要關係顯示在下一張投影片。,55,10.6 磁碟效能,曲線的彎曲點大概是在78%。這就是為何80%是大部分磁碟裝置的基本上限。在那之後,佇列時間會急速上升。,56,10.6 磁碟效能,檔案在磁碟的組織方式大大地影響了生產量。 磁碟臂的運作耗去最大部分的服務時間。 磁碟規格中的平均搜尋時間通常

28、落在5到10ms的範圍中。 然而,全程查找搜尋的過程最多可達到有15到20ms。 良好的磁碟排程演算法會盡力讓搜尋時間最小。,57,10.6 磁碟效能,最單純的磁碟排程策略是先來先做(first-come, first-served, FCFS)。 就像它名字的意思一樣,所有的I/O請求是以它們到達磁碟服務佇列的順序被服務。 在此方法下,並沒有真正的磁碟臂移動控制方式,因此隨機,橫掃磁碟的情況可能發生。 效能是不可預測的,而且會隨著工作量的改變而變動。,58,10.6 磁碟效能,磁碟臂的移動能夠被大幅地降低,假如請求能被排序,使得磁碟臂只移動到離他目前所在位置最近的磁軌。 這個想法被最短搜尋時

29、間優先(shortest seek time first, SSTF)所使用。 使用SSTF,飢餓(starvation)現象可能會發生:磁碟遠端部位的磁軌請求可能會一直被推到請求佇列的後面。 有趣的是,這個問題最差的情況會發生在低的磁碟使用率上。,59,10.6 磁碟效能,為了避免SSTF的飢餓風險,一個公平的方式就是讓磁碟臂持續地掃瞄整個磁碟的表面,直到它到達了它服務佇列中有請求的軌道才停止。 這個方法稱為升降梯演算法(elevator algorithm)。 在磁碟排程的背景中,升降梯演算法是已知的SCAN(並不是一個縮寫字)。 當SCAN負責大量磁碟臂運作時,此運作會是連接不斷的且是可

30、預測的。,60,10.6 磁碟效能,一種SCAN的變形,稱為C-SCAN,是一種環狀SCAN,其中第0軌被當作是在最高磁軌的旁邊。 磁碟臂只由單一方向移動,此法提供一種簡單的SCAN製作方式。 SCAN與C-SCAN的磁碟臂移動可以更進一步地藉由LOOK 與 C-LOOK 演算法來降低。 並非掃瞄整個磁碟,他們只會移動到被請求的到最高與最低磁軌。,61,10.6 磁碟效能,在高的使用率下,SSTF執行起來比SCAN或 LOOK稍微好一些。但飢餓的風險依然存在。 在非常低的使用率下(低於20%),任何演算法的效能都是可以被接受的。 不論哪一種排程演算法被使用,檔案的置放位置依舊大大地影響了整體效

31、能。 如果可能,最常使用的檔案應該被放在磁碟的中央磁軌,並且磁碟應該定期地重新整理。,62,10.6 磁碟效能,減少磁碟臂移動的最佳方式就是盡可能避免使用磁碟。 為了達到這個目的,許多磁碟裝置,或者磁碟裝置控制器,都裝備有快取記憶體或者一些主記憶體分頁會設置給I/O子系統專用。 磁碟快取記憶體通常為關連式。 因為關連式快取記憶體的搜尋有點花時間,但效能卻比較小的磁碟快取好,因為較小的磁碟快取命中率通常較低。,63,10.6 磁碟效能,許多以磁碟裝置為基礎的快取使用預先擷取(prefetching) 計數來降低磁碟存取。 在使用預先擷取時,磁碟會讀取在預期被請求磁區之後連接的一些磁區,這些連接其後的磁區將會很快地被需要。 研究的經驗顯示超過50%的磁碟存取在本質上都是連續的,且預先擷取平均會增加40%的效能。,64,10.6 磁碟效能,預先擷取的不利情形是快取污染(cache pollution),其發生於快取記憶體中幾乎被沒有任何程序需要的資料所佔滿,而只留下一點點空間給用有的資料。 各種置換演算法,LRU、LFU 與 random,被使用來協助保持快取記憶體在乾淨的狀態。 此外,因為磁

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论