Chapter 10 效能測量與分析.

Slides:



Advertisements
Similar presentations
《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
Advertisements

因果图. 因果图 因果图的适用范围 如果在测试时必须考虑输入条件的各种 组合,可使用一种适合于描述对于多种 条件的组合,相应产生多个动作的形式 来设计测试用例,这就需要利用因果图。 因果图方法最终生成的就是判定表。它 适合于检查程序输入条件的各种组合情 况。 因果图的适用范围 如果在测试时必须考虑输入条件的各种.
第一章 微型计算机系统概述 1.1 计算机的发展与应用 微型计算机的发展与分类 微型计算机的应用
教员信息 姓 名:仲崇权 单 位:电子与信息工程学院 电 话: 办公室:创新院大厦720房间 :
Welcome to the world of Computer Organization 计算机组成原理
第十五章 控制方法.
報告者:蕭曄鴻 班級:溫馨甲孝 指導教授:李開濟博士
第 2 章 中央處理單元.
單元名稱: 健康的兩性交往.
Introduction to Computer Science
第二章 微型计算机系统 第一节 基本术语和基本概念 第二节 计算机系统的基本构成 第三节 微机系统的硬件组成 第四节 微机系统的软件组成.
微型计算机技术及应用 王 健 主讲 授课学时:40学时 大连理工大学计算机系.
CHAPTER 9 虛擬記憶體管理 9.2 分頁需求 9.3 寫入時複製 9.4 分頁替換 9.5 欄的配置法則 9.6 輾轉現象
信息检索中效率问题的研究 报告人:赵江华 北京大学计算机科学与技术系 网络与分布式系统实验室 2002年4月21日.
Foundations of Computer Science
何谓学龄期 学龄期是指6~7岁入小学起至12~14岁进入青春期为止的一个年龄段。期小儿体格生长仍稳步增长,除生殖系统外其他器官的发育到本期末已接近成人水平。 这个时期发病率较前为低,但要注意预防近视眼和龋齿,矫治慢性病灶,端正坐、立、行姿势,安排有规律的生活、学习和锻炼,保证充足的营养和休息,注意情绪和行为变化,避免思想过度紧张。
穆公(朱金清 微博:淘穆公 阿里HBase业务设计实践 穆公(朱金清 微博:淘穆公
情緒與壓力管理─背部舒緩 指導老師:彭易璟 第六組組員:會資三乙 499A0047 謝宛霖 會資三乙 499A0019 吳汶諭
第三章 存储系统 现代计算机系统都以存储器为中心 在计算机运行过程中,存储器是各 种信息存储和交换的中心。
第二章 实时系统的特征及其任务 计算机学院 潘薇
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
信息科学与工程学院计算机科学系 2006年9月—2007年1月
指導老師:楊淑娥 組別:第一組 成員:劉怡萱4a0i0066 吳珮瑜4a0i0070 林秋如4a0i0075 陳婉婷4a0i0076
組員:4A140013張瓊云 4A1I0039石宜芬 4A1I0909許峻綱 指導老師:王立杰老師
性能测试.
第五章 处理机管理 5.1 引言 5.2 调度算法 5.3 调度算法性能分析 5.4 实时调度 5.5 多处理机调度 5.6 调度算法举例
最新計算機概論 第3章 計算機組織.
第二章 计算机硬件基础 --微型计算机硬件的组成.
新世代計算機概論 第3章 電腦的系統單元.
第8章 机床操作 主讲:臧红彬 博士.
第三章 处理机调度与死锁 3.1 处理机调度的基本概念 3.2 调度算法 3.3 实时调度 3.4 多处理机系统中的调度
William Stallings 计算机组成与结构(第8版)
第五章 设备管理 5.1 I/O系统 5.2 I/O控制方式 5.3 缓冲管理 5.4 设备分配 5.5 设备处理 5.6 磁盘存储器管理.
第五章 设 备 管 理 5.1 I/O系统 5.2 I/O控制方式 5.3 缓冲管理 5.4 I/O软件 5.5 设备分配
第三章 资料的统计描述 上一张 下一张 主 页 退 出.
三级综合医院评审解读-生物安全 安徽医科大学第一附属医院检验科 徐元宏.
Chapter 13 輸入/輸出系統 (I/O Systems)
指導老師:陳韻如 班級:幼保二甲 姓名:林靜宜 學號:4A0I0033
資策會 南區資訊處 教育訓練中心 吳建興 個人電腦組裝 PC DIY 資策會 南區資訊處 教育訓練中心 吳建興
Chapter 5 電腦元件 目標---- 研讀完本章後,你應該可以: 閱讀有關電腦的廣告以及了解它的專業用語(行話)。
主讲教师:唐大仕 第5讲 计算机硬件 主讲教师:唐大仕
第 2 章 中央處理單元.
通識課程 保險行銷與現代生活 Chapter 5 壽險與稅法 2011/12.
第8章 现代微型计算机 x86系列微处理器 8.2 微型计算机体系结构 8.3 存储管理技术 8.4 多任务管理与I/O管理
第5章 中央處理單元與主記憶體 5-1 中央處理單元-CPU 5-2 主記憶體.
TPC-C标准及实验平台.
第十四章 数值变量的统计描述.
二、计算机基本硬件介绍及选购 By:查宇
CPU資料處理 醫務管理暨醫療資訊學系 陳以德 副教授: 濟世CS 轉
第8章作業系統.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
第二章 行程管理 朱肇明 資管系 講師 大華技術學院.
5 Computer Organization (計算機組織).
Ch 9: Input/Output System 输入/输出系统
本章重點: 一、集中量數的意義和種類 二、算術平均數 三、中位數(中數) 四、眾 數 五、其他集中量數 六、SPSS12.0實務操作
統計量數 集中趨勢量數 離散趨勢量數 相對位置量數 分配形態量數.
敍述統計學 許明宗.
學習內容 物料需求計畫的意義與目的 傳統存量控制模式的缺失 物料需求計畫模式 物料需求計畫之效益 物料需求計畫的電腦化
第四章 存储器管理 4.1 存储器的层次结构 4.2 程序的装入和链接 4.3 连续分配方式 4.4 基本分页存储管理方式
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
计算机系统结构(2012年春) ----存储层次: Cache基本概念
微机原理与接口技术 ——第三章 80x86微处理器 西安邮电大学 计算机学院 范琳.
公 共 关 系 主编:谢苏.
第五章 设备管理 5.1 I/O系统 5.2 I/O控制方式 5.3 缓冲管理 5.4 设备分配 5.5 设备处理 5.6 磁盘存储器管理.
第三章 平均数、标准差与变异系数 第一节 平均数 上一张 下一张 主 页 退 出.
第六章 記憶體.
24H MIS 管理與網路基礎架構 7×24×365 MIS全天候待命 0800免付費服務專線 專人專案服務處理 網路服務工程團隊,專案管理
清华大学计算机科学与技术系高性能计算研究所 郑纬民 教授 2005年5月
第11章 儲存裝置 與其管理.
保护环境 人人有责 Come in.
Presentation transcript:

Chapter 10 效能測量與分析

第十章 目標 瞭解電腦效能的測量方式。 能夠敘述常見的評效程式及其限制。 熟悉可供改進CPU及磁碟效能的因素。

10.1 導論 本章所提出的概念將會幫助你瞭解各種電腦效能的測量方式。 在你購買大型系統,或者試著改進現有系統效能時,你將會用到這些觀念。 我們將會討論一些影響系統效能的因素,還包括一些你可以用來改進程式效能的小方法。

10.2 基本的電腦效能公式 在我們討論RISC與CISC時,基本電腦效能公式提供了很大的幫助:

10.2 基本的電腦效能公式 我們也已經學過CPU效能並非是影響整體系統效能的單一因素。記憶體與I/O效能也同樣重要。 Amdahl’s 法則告訴我們系統效能的改進在於加快某一元件,此元件不但是取決於元件本身的增速,而且還包括元件負擔整體系統工作量的多寡:

10.2 基本的電腦效能公式 簡而言之,Amdahl’s 法則告訴我們如何使一般的情況變快。 因此,假如我們的系統以CPU為主(CPU bound),我們則需要使CPU變得更快。 一個以記憶體為主( memory bound) 的系統則需要在記憶體管理上做改進。 I/O為主( I/O bound)的系統效能會隨著I/O系統的升級而改進。 當然,在系統的某個部分改進效能問題,會暴露系統另一部份的缺點!

10.3 數學上的準備 系統效能的測量取決於個人的觀點 一個電腦使用者最常關心的是反應時間(response time):系統完成一個工作需要花多長的時間? 系統管理者通常較在乎生產量(throughput):在反應時間受到影響之前,有多少工作可以同時被系統處理? 這兩個觀點具有相關性:假如系統完成一個工作花費k秒,則它的生產量為每秒1/k個這樣的工作。

在比較量個系統的效能時,我們會測量每個系統做相同工作所花費的時間。 若系統A與系統B執行相同的程式,我們會說系統A比系統B快n倍,如果: 10.3 數學上的準備 在比較量個系統的效能時,我們會測量每個系統做相同工作所花費的時間。 若系統A與系統B執行相同的程式,我們會說系統A比系統B快n倍,如果: 系統A是系統B的x% 快,如果:

10.3 數學上的準備 假設我們有兩輛剛跑完10哩競速的賽車,A車用了3分鐘,B車用了4分鐘。 利用我們的公式,A車是B車的1.25倍快,而且A車比B車快25%:

10.3 數學上的準備 在我們評量系統效能時,我們會對於一個特定工作量下的預期效能特別有興趣。 我們會利用統計學上的工具,此工具為核心趨勢測量(measure of central tendency)。 大家最為熟悉的一個是算術平均數(arithmetic mean )或者稱為平均,可用下列公式表示:

10.3 數學上的準備 如果資料斜偏或散亂,算術平均數可能會遭到誤用 考慮下表中所給予的系統執行時間,效能上的差異在簡單的平均之下將會被隱藏起來。

10.3 數學上的準備 如果執行頻率(預期的工作量)已知,那麼加權平均(weighted average)便可以被充分利用。 50  0.5 + 200  0.3 + 250  0.1 + 400  0.05 + 5000  0.05 = 380.

10.3 數學上的準備 然而,工作量會隨著時間改變。 一個對與某工作量做最佳化的系統,在工作量改變時,可能會變得很糟糕,就如同下面所顯示的一樣:

10.3 數學上的準備 比較兩個或多個系統的相對效能時,幾何平均數(geometric mean) 是較合適的核心趨勢測量工具 它是n 個測量值乘積的n次方根。 不同於算術平均,幾何平均不會給予我們對實際系統效能的期望。它所提供的僅僅是一個比較的工具。

10.3 數學上的準備 幾何平均通常使用經過正規化(normalize)後的比例,此比例是待測系統相對於對照機器的比例。 我們執行了下表中的計算。

10.3 數學上的準備 當另一個系統被使用來作為對照機器,我們可以得到不同的數字。

正規化後的幾何平均真正的用處在於不論是那個系統作為對照機器,所得到的幾何平均值的比例都會一致。 10.3 數學上的準備 正規化後的幾何平均真正的用處在於不論是那個系統作為對照機器,所得到的幾何平均值的比例都會一致。 這也就是說,在系統A對系統B,系統B對系統C,系統A對系統C的幾何平均比例都是相同的,不論哪一部機器被選作對照機器。

10.3 數學上的準備 我們使用系統B與系統C做為對照機器之後的結果顯示在下表。 我們可以得到 1.6733/1 = 2.4258/1.4497.

10.3 數學上的準備 使用幾何平均來展示機器效能的問題是所有的執行時間對計算結果的貢獻程度都相同。 因此,縮短一個小程式10%的執行時間,與縮短一個大程式10%的執行時間將會得到相同的效果。 縮短程式一般較容易做最佳化,但在真實世界中,我們想要縮短的是冗長程式的執行時間 同樣地,若幾何平均不成比例,如某個系統幾何平均比另一個小50%,則不代表它就是兩倍快!

調和平均數(harmonic mean) 以比率的方式提供我們在執行時間上的比較。 10.3 數學上的準備 調和平均數(harmonic mean) 以比率的方式提供我們在執行時間上的比較。 調和平均數提供我們計算系統生產量的數學期望值,以及比較系統與系統元件的相對生產量。 為了找出調和平均數我們將比率的倒數相加,並且以比例的個數相除: H = n  (1/x1+1/x2+1/x3+ . . . + 1/xn)

10.3 數學上的準備 調和平均數在兩個地方優於幾何平均數。 首先,它是機器行為的合適預測者。 因此他比簡單比較效能更有用 其次,最慢的比率在結果上會有較大的影響,所以改進最慢的效能會帶來較佳的結果。(通常這就是我們想要的) 主要的缺點是幾何平均在選擇對照機器上較為靈敏。

10.3 數學上的準備 下面的圖表整理了在什麼情況下用什麼效能測量較為適當。

10.3 數學上的準備 不幸地,在電腦銷售上,其對於高明行銷的依賴通常與良好效能一樣多 在確定購買電腦時,客觀的電腦效能測量通常會是主要依據 對於企業級系統來說,這樣的過程是複雜的,而且對於錯誤決定的決果通常很嚴重。 不幸地,在電腦銷售上,其對於高明行銷的依賴通常與良好效能一樣多 謹慎的購買者將會瞭解客觀的效能數據如何被偏頗使用來做為銷售電腦時的優點。

10.3 數學上的準備 最常見的欺騙方法包括: 選擇性的統計:只引用有利的結果而刪除其他結果。 引用最高效能數值,而忽略平均狀況 在比較的效能資料上使用含糊的字眼,像是「幾乎」、「接近」、「超過」與「低於」。 使用不適當的統計方法或「將蘋果與橘子相比」。 暗示你應該購買某一特定系統,因為「每個人」都買了類似的系統。 更多的例子可以在商業及貿易雜誌廣告上找到。

10.4 標準效能評量法 標準效能測量(Performance benchmarking)是一種客觀測量兩個系統效能的科學。 價格效能比(Price-performance ratios) 可從標準效能評量中被衍生得到。 這個方法麻煩的地方是沒有一個通用的電腦效能測量方式可以告訴你在最少金額下,那個系統將可以最快速地執行「你的」應用程式(使用最少的壁鐘時間)。

10.4 標準效能評量法 許多人將CPU速度誤認為是效能的同義詞。 CPU速度的測量包括了週期時間(MHz, and GHz)以及每秒百萬指令數(MIPS)。 系統A在1.4GHz運作,系統B在900MHz運作,若我們說系統A比系統B快,只有在系統A與系統B的ISAs相同時才成立。 不同的ISAs,在相同的壁鐘時間量下,兩個系統可能獲得相同結果。

10.4 標準效能評量法 不考慮時脈速度與ISA的情況下描述效能,在過去幾年已經發展出了一些綜合性評效程式(synthetic benchmarks)。 綜合性評效程式是一種除了產生效能數值外別無其他目的的程式。 早期的綜合性評效程式Whetstone, Dhrystone, 與 Linpack 是較小且較容易被最佳化的程式。 從一開始,這個事實便限制了這些程式的有用性。 由於這些程式太小,以致於沒辦法用來評量現今系統的效能。

10.4 標準效能評量法 在1988年,標準效能評鑑組織( Standard Performance Evaluation Corporation, SPEC) 被建立用來滿足客觀標準評效程式的需求。 SPEC 製造標準評效程式集給各種電腦與電腦應用程式。 他們最廣為人知的標準評效程式集便是SPEC CPU 標準評效程式集。 SPEC2000標準評效程式集包含了兩個部分, CINT2000,用來測量整數算術運算,以及CFP2000,用來測量浮點數運算。

10.4 標準效能評量法 SPEC 標準評效程式由一些核心程式所組成。 這些程式為需要解決特定問題的核心程序的程式。 對於解決問題沒有貢獻的運作會被摒除在外,例如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中找到

10.4 標準效能評量法 在大多數的系統中,會需要兩個24小時的整天來執行SPEC CPU2000 標準評效程式集。 在完成之後,每個核心的執行時間(如標準評效程式集所回報)會被除以在Sun Ultra 10 執行相同核心所需要的時間。 最後的結果為所有執行時間的幾何平均值 製造商會發表兩組數值:峰值(peak number)跟基值(base number),分別代表著具有編譯器最佳化與不具有編譯器最佳化。

10.4 標準效能評量法 SPEC CPU 標準評效程式僅僅評估了CPU效能。 當高傳輸量做為整體系統效能的主要考量下,交易處理委員會(Transaction Performance Council, TPC)的標準評效程式則較為合適。 目前的版本為TPC-C 標準評效程式。 TPC-C 使用終端模擬軟體來建立倉儲商業的特定交易模式。

TPC-C單位值為每秒鐘完成的新訂單交易數 (tpmC),其中其他交易的混合也同時在相同的系統中執行。 10.4 標準效能評量法 TPC-C單位值為每秒鐘完成的新訂單交易數 (tpmC),其中其他交易的混合也同時在相同的系統中執行。 tpmC 包含了價格效能比,這是由系統的成本除以產能單位所得到。 系統的價格包括了所有客戶預期會付出的硬體、軟體以及維護費。

交易處理委員會也設計標準評效程式給決策支援系統(提供給類似資料探勘之類的應用)與以網站為主的電子商業系統。 10.4 標準效能評量法 交易處理委員會也設計標準評效程式給決策支援系統(提供給類似資料探勘之類的應用)與以網站為主的電子商業系統。 在測試中每個所使用的元件必須是在報告被公布時,可在市場上購得的。 測試的結果必須由經過TPC認證的獨立審查單位所審核。

10.4 標準效能評量法 TPC標準評效程式為一種模擬工具。 他們在改變條件下,可以用來最佳化系統效能,這些條件是在一般情況下不常發生的。 其他種類的模擬工具可以被設計來評估已存在的系統效能,或者是塑造不存在的系統效能模型。 在建造系統模擬工具時,一個最大的挑戰是如何產生真正的工作量。

10.4 標準效能評量法 為了決定特定系統元件的工作量,有時會利用系統記錄(system traces)。 系統記錄使用硬體或軟體來探測感興趣的元件動作,以收集詳細的行為資訊。 因為由探測器所收集的資料非常龐大,他們通常指記錄幾秒鐘的資料。 在產生統計上有意義模型的過程中,需要好幾個記錄才夠。

10.4 標準效能評量法 設計一個模擬器時,必須建立一份清楚定義模擬器目的的文件。 一個模型若太過詳細,在撰寫上則太耗費成本與時間。 相反地,模擬器若太過簡單而忽略掉關鍵因素則會導致錯誤的結果。 模擬器必須被檢驗以確認是否可以達到他原先所設定的目的:簡單的模擬器比複雜的模擬器更容易檢驗。

CPU 最佳化包含了許多已經在前面章節討論過的主題。 這兩個方法都可能重大地影響效能。

10.5 CPU 效能最佳化 我們知道當管線維持在飽滿的狀態下,管線可以提供顯著的執行加速。 條件分支指令是一種管線危障(hazard),其可能會導致管線被沖洗(flush)。 其他的危障還包括衝突、資料相依以及記憶體存取延遲。 延後分支(Delayed branching) 提供了一種處理分支危障的方法。 利用延後分支,一個或多個跟隨於條件分支之後的指令都會被送到管線預先執行,不論分支所產生出來的結果為何。

10.5 CPU 效能最佳化 設定延後分支的任務大部分由編譯器負責。 編譯器可以用許多方式選擇要放置在耽擱時槽內的指令。 第一個選擇是不管分支是否會發生,都會繼續執行的有用指令。 其他的可能包括了若分支發生則會執行,若分支不發生也不會有任何損害的指令。 延後分支的優點是硬體成本較低。

10.5 CPU 效能最佳化 分支預測(Branch prediction)是另一種將分支代價降低的方法。 分支預測藉由猜測下個可能被執行的指令來避免管線暫停。 這就是所謂的推測執行(speculative execution)。 分支預測的技術依照不同的分支型態而有所改變。If/then/else,迴圈控制,以及子程式分支都有不同的執行特性。

10.5 CPU 效能最佳化 預測可以由很多種方式產生: 固定預測(fixed predictions)不會隨著時間而改變預測的內容。 真實預測(true predictions) 預測分支會發生或不會發生。 動態預測(Dynamic prediction) 使用過去的對於分支及其輸出的資訊進行預測。 靜態預測(Static prediction) 不使用歷史資訊。

10.5 CPU 效能最佳化 當固定預測認為分支不會發生,則程式的正常執行順序就會被進行。 然而,此程序會在預測發生時同時進行。 如果預測是正確的,則預先處理的資訊會被刪除並且繼續執行。 若預測是錯誤的,則推測程序被刪除,並且預先處理的資訊會被用來執行正確的路徑。

當固定預測的假設是分支會發生時,在推測程序開始前狀態資訊會被儲存。 若預測正確,則已經儲存的資訊會被刪除。 10.5 CPU 效能最佳化 當固定預測的假設是分支會發生時,在推測程序開始前狀態資訊會被儲存。 若預測正確,則已經儲存的資訊會被刪除。 若預測不正確,則推測程序被刪除,且先前儲存的資訊會被回存到執行環境中,那時適合的路徑就可以被進行。

10.5 CPU 效能最佳化 動態預測利用高速的分支預測緩衝器(branch prediction buffer)來結合指令及其歷史紀錄。 此緩衝器藉由分支指令的低位址以及額外用來記錄分支最近是否發生的位元做為索引。 一位元動態預測(One-bit dynamic prediction)使用單一位元記錄上一次碰到的分支是否發生。 二位元預測(Two-bit branch prediction) 保留先前分支發生的歷史記錄以及分支發生的機率。

10.5 CPU 效能最佳化 早期的分支預測製作使用的是靜態分支預測。 幾乎最新的處理器(包括Pentium, PowerPC, UltraSparc, and Motorola 68060) 都是使用二位元動態分支預測。 某些超純量處理器架構把分支預測當作是使用者的選項。 許多系統為了使生產量提高,而利用專屬電路來製作分支預測。

10.5 CPU 效能最佳化 最好的硬體與編譯器不可能與那些專精於有效演算法與編碼設計技術的人有一樣的能力。 人們可以看見將要在機器上執行的程式內容。 舉例來說,一個好的程式設計師將會用以行為主的順序去存取一個以行為主的陣列。 在這節結束時,我們會提供給你一些小技巧來達到程式效能最佳化。

10.5 CPU 效能最佳化 運算計數(Operation counting)能夠增強程式效能。 利用這個方法,你可以測量在一個迴圈當中執行的指令型態數目,然後測定每個指令型態所需要的機器週期數。 這個想法是在給定的架構下,提供指令型態最佳混和比例。 巢狀迴圈表現出了一些令人感興趣的最佳化機會。

10.5 CPU 效能最佳化 迴圈展開(Loop unrolling)是一個擴展迴圈的過程,使得每一個新的疊代(iteration)都包含有幾個原來的重複主體,因而使得每個迴圈疊代會執行更多的運算。例如: 變成 for (i = 1; i <= 30; i++) a[i] = a[i] + b[i] * c; for (i = 1; i <= 30; i+=3) { a[i] = a[i] + b[i] * c; a[i+1] = a[i+1] + b[i+1] * c; a[i+2] = a[i+2] + b[i+2] * c; }

10.5 CPU 效能最佳化 迴圈融合(Loop fusion)結合了使用相同資料項目的迴圈,可能會改進快取記憶體的效能。例如: 變為 for (i = 0; i < N; i++) C[i] = A[i] + B[i]; D[i] = E[i] + C[i]; for (i = 0; i < N; i++) { C[i] = A[i] + B[i]; D[i] = E[i] + C[i]; }

10.5 CPU 效能最佳化 迴圈分裂(Loop fission)把大的迴圈切成較小的片段,以降低資料相依性及資源衝突。 迴圈分裂如同所知的迴圈剝解(loop peeling)從一個迴圈中移除開始與結束敘述的程序。例如: 變成 for (i = 1; i < N+1; i++) { if (i==1) A[i] = 0; else if (i == N) A[i] = N; else A[i] = A[i] + 8; } A[1] = 0; for (i = 2; i < N; i++) A[i] = A[i] + 8; A[N] = N;

10.5 CPU 效能最佳化 課文中列出了一些改進程式效能的基本法則。 當你把這些基本法則用在經常執行的程式碼片段中時,你會發現最佳化的成果將得到很大的報酬。 簡單地說,試著上常用的情況加快。.

10.6 磁碟效能 最佳化的磁碟效能對系統產能而言是相當重要的。 磁碟裝置是最慢的記憶體元件,既使以最快的存取時間來說,都比主記憶體存取時間要長一百萬倍。 當虛擬記憶體分頁被使用時,慢速的磁碟系統將會阻塞處理程序,並且拖慢所有程式的效能。 低CPU使用率實際上可能來自於I/O子系統,因為CPU花了很多時間在等待I/O動作,而非運算上。

10.6 磁碟效能 磁碟使用率(Disk utilization)測量磁碟忙碌於服務I/O請求的時間百分比。 磁碟使用率是以磁碟速度以及請求到達服務佇列的速率來測定。以數學方式表示: 使用率=請求到達的速率磁碟提供服務的速率 其中到達的速率為每秒幾個請求,而磁碟提供服務的速率為每秒幾個I/O動作(IOPS)

在佇列中一個請求所花的時間與磁碟服務時間及磁碟忙碌機率有直接相關,而與磁碟空閒的機率間接相關。 10.6 磁碟效能 在佇列中一個請求所花的時間與磁碟服務時間及磁碟忙碌機率有直接相關,而與磁碟空閒的機率間接相關。 以公式化表示: 在佇列中的時間 = (服務時間使用率)  (1 – 使用率) 佇列時間與使用率(由上面的公式)的重要關係顯示在下一張投影片。

10.6 磁碟效能 曲線的彎曲點大概是在78%。這就是為何80%是大部分磁碟裝置的基本上限。在那之後,佇列時間會急速上升。

10.6 磁碟效能 檔案在磁碟的組織方式大大地影響了生產量。 磁碟臂的運作耗去最大部分的服務時間。 磁碟規格中的平均搜尋時間通常落在5到10ms的範圍中。 然而,全程查找搜尋的過程最多可達到有15到20ms。 良好的磁碟排程演算法會盡力讓搜尋時間最小。

10.6 磁碟效能 最單純的磁碟排程策略是先來先做(first-come, first-served, FCFS)。 就像它名字的意思一樣,所有的I/O請求是以它們到達磁碟服務佇列的順序被服務。 在此方法下,並沒有真正的磁碟臂移動控制方式,因此隨機,橫掃磁碟的情況可能發生。 效能是不可預測的,而且會隨著工作量的改變而變動。

10.6 磁碟效能 磁碟臂的移動能夠被大幅地降低,假如請求能被排序,使得磁碟臂只移動到離他目前所在位置最近的磁軌。 這個想法被最短搜尋時間優先(shortest seek time first, SSTF)所使用。 使用SSTF,飢餓(starvation)現象可能會發生:磁碟遠端部位的磁軌請求可能會一直被推到請求佇列的後面。 有趣的是,這個問題最差的情況會發生在低的磁碟使用率上。

10.6 磁碟效能 為了避免SSTF的飢餓風險,一個公平的方式就是讓磁碟臂持續地掃瞄整個磁碟的表面,直到它到達了它服務佇列中有請求的軌道才停止。 這個方法稱為升降梯演算法(elevator algorithm)。 在磁碟排程的背景中,升降梯演算法是已知的SCAN(並不是一個縮寫字)。 當SCAN負責大量磁碟臂運作時,此運作會是連接不斷的且是可預測的。

10.6 磁碟效能 一種SCAN的變形,稱為C-SCAN,是一種環狀SCAN,其中第0軌被當作是在最高磁軌的旁邊。 SCAN與C-SCAN的磁碟臂移動可以更進一步地藉由LOOK 與 C-LOOK 演算法來降低。 並非掃瞄整個磁碟,他們只會移動到被請求的到最高與最低磁軌。

10.6 磁碟效能 在高的使用率下,SSTF執行起來比SCAN或 LOOK稍微好一些。但飢餓的風險依然存在。 在非常低的使用率下(低於20%),任何演算法的效能都是可以被接受的。 不論哪一種排程演算法被使用,檔案的置放位置依舊大大地影響了整體效能。 如果可能,最常使用的檔案應該被放在磁碟的中央磁軌,並且磁碟應該定期地重新整理。

10.6 磁碟效能 減少磁碟臂移動的最佳方式就是盡可能避免使用磁碟。 為了達到這個目的,許多磁碟裝置,或者磁碟裝置控制器,都裝備有快取記憶體或者一些主記憶體分頁會設置給I/O子系統專用。 磁碟快取記憶體通常為關連式。 因為關連式快取記憶體的搜尋有點花時間,但效能卻比較小的磁碟快取好,因為較小的磁碟快取命中率通常較低。

10.6 磁碟效能 許多以磁碟裝置為基礎的快取使用預先擷取(prefetching) 計數來降低磁碟存取。 在使用預先擷取時,磁碟會讀取在預期被請求磁區之後連接的一些磁區,這些連接其後的磁區將會「很快」地被需要。 研究的經驗顯示超過50%的磁碟存取在本質上都是連續的,且預先擷取平均會增加40%的效能。

10.6 磁碟效能 預先擷取的不利情形是快取污染(cache pollution),其發生於快取記憶體中幾乎被沒有任何程序需要的資料所佔滿,而只留下一點點空間給用有的資料。 各種置換演算法,LRU、LFU 與 random,被使用來協助保持快取記憶體在乾淨的狀態。 此外,因為磁碟快取記憶體作為要被寫回磁碟資料的集結地,一些磁碟快取管理機制在資料被寫入磁碟之後,就會將所有的位元組清除。

10.6 磁碟效能 隨著快取磁碟的寫入,我們所面臨的一個問題是快取記憶體為揮發性記憶體。 在大規模的系統當機事件中,在快取記憶體中的資料會遺失。 一個在主機上執行的應用程式認為資料已經被交付給磁碟,但事實上只是存放在快取中。假如快取失去功能,則資料就會消失。 為了要避免電力存快取中消失,一些以磁碟控制器為基礎的快取記憶體會為快取做鏡像(mirror)並且以一個電池備援。

10.6 磁碟效能 另一個用來處理快取失能的方法是利用直寫式快取記憶體(write-through cache),其中資料的備份如果在短時間內會需要的話,則留在快取記憶體中,但同時也會寫回磁碟。 作業系統只在資料確實被放回磁碟之後才會標示I/O已完成。 利用直寫式快取記憶體,效能會有些犧牲以提供較佳的可靠性。

10.6 磁碟效能 當產能比可靠性更為重要時,系統也許會利用回寫式快取(write back cache)策略。 某些磁碟裝置使用投機寫入(opportunistic write)。 依照這個方法,修改區塊會在快取中等待,直到同一磁柱的讀取請求到達。 寫入的動作被肩負(piggybacked)在讀取動作之上。

10.6 磁碟效能 投機寫入降低了讀取效能,但卻改進了寫入效能。 此種包含了磁碟效能最佳化的交易呈現出不同的選擇。 我們的首要責任是確保資料的可靠度以及一致性。 不管他的價格為何,升級磁碟子系統總是比資料遺失來得便宜。

第十章 結論 電腦效能的評估仰賴於測量核心趨勢,包括算術平均、加權算術平均、幾何平均與調和平均。 這些測量方式都有適合他們的不同狀況。 標準評效程式集被設計來提供客觀的效能評估標準最受到尊崇的評效程式集為SPEC與TPC標準評效程式集。

第十章 結論 CPU效能仰賴於許多因素。 這些因素包括管線化、平行執行單元、整合浮點單元、以及有效的分支預測。 使用者程式碼最佳化在效能改進上提供了最大的機會。 程式碼最佳化的方式包括迴圈控制以及良好的演算法設計。

第十章 結論 多數的系統,其本身的效能嚴重地取決於I/O子系統。 磁碟效能可以藉由良好的排程演算法、適當的檔案置放以及快取方式而得到改進。 快取提供了速度上的改進,但卻也帶來了一些風險。 讓磁碟重整,可以降低磁碟臂移動並且使得服務時間較快速。

End of Chapter 10