2016年10月27日至28日,SPEC(Standard Performance Evaluation Corporation,標準性能評估組織)于北京舉辦了SPEC 2016亞洲峰會,這也是SPEC組織自1988年成立以來首次在中國舉辦的峰會。
我們現在已經知道,SPEC是一個非營利性的第三方組織,旨在制定、修改以及認證一系列計算系統應用性能評估的標準。SPEC制作的這些基準測試以及性能指標可以廣泛適用并真實反映出客戶的實際計算環境。
在大會上,SPEC組織專門用了雙倍的議題時間來介紹如何設計一個好的基準測試(Designing a Good Benchmark),要看懂這個話題,我們首先要知道:什么是基準測試。議題的講師是SPECpower的架構師Jeremy Arnold,不過,談及的內容是很具有通用性的,并不僅僅對應于SPECpower測試。
SPECpower的架構師Jeremy Arnold
什么是基準測試
基準測試,特指英文中的Benchmark,意思是指一個或者一套用來獲知一臺或者一套計算機系統的性能指標的軟件程序,它產生的原因就源于我們想知道這些計算機系統的性能指標,知道了這些性能指標可以用來干什么呢?可以用于營銷,產品研發,或者研究,等等。
基準測試的劃分
毫無疑問,基準測試有很多種,測試的性能指標也各有不同,如圖所示,橫軸上越往右,基準測試越來越和實際應用接近,同時,在縱軸上可以看出,它也越來越復雜,這個劃分大致應該是按照基準測試程序所處的層次劃分,最低的Synthetic代表“原語”級別的層次(大致上是用來測試如CPU、內存等硬件的比較純粹的性能指標以及底層操作系統的性能),Kernel是內核調用(可以測試驅動程序、操作系統的效率),Component應該是操作系統組件或中間件,或者系統中的某一個子系統(如CPU子系統、存儲子系統),Application這是應用程序本身,System的意思這是整套計算機系統。
不同層次的基準測試可以讓我們獲得同一個系統不同的參數,SPEC組織著名的SPEC CPU基準評測軟件可以在從Component級別到Application的級別告訴我們足夠多的數字,但在虛擬化和云計算當中,我們就需要SPEC Cloud IaaS這樣的System級別的測試才能給我們帶來準確、全面的了解。
對基準測試的“評估”——什么才是“好”的基準測試
對于一個指定的基準測試,如何評估它的好壞?這有些類似與“基準測試的性能指標”,Jeremy Arnold對此有非常好的闡述,下面有一定的文字編輯:
第一個是相關性(Relevance),也就是說我們在做基準的時候,選擇到底什么樣的基準時,我們要確保它和我們要做的工作是有相關性的,也就是說我們所選擇的基準是能夠給我們提供工作所需要的信息。
第二個是可重復性(Reproducibility),就是我們在運行基準的時候,同一個環境下運行多次同一個基準測試,我們會希望得到共同的結果,如果每一次不同的運行結果是不一樣的。這就意味著不是一個好的測試,不具有可重復性。
第三是公平性(Fairness),這在基準測試的指標中是至關重要的,也就是說我們不必希望這基準測試在某一些服務器的系統上性能好,在某另一些的服務器上性能不好。我們希望各個不同的服務器上和供應商上都能夠有同樣的表現。
第四個是可驗證性(Verifiability),指的就是說基準測試本身是可以驗證其是否準確的,我們從而可以知道這個基準測試時候具有準確性,很多測試在這一點上其實比較缺乏。
最后一個指標是可使用性(Usability),通俗地說,就是要簡單方便,也就是說要用戶友好,我們要能夠不那么困難就可以正確地使用這些基準測試,從而能夠獲得我們想獲得的測試數據。
基準測試的組成——如何設計一個好的基準測試
基準測試當中最重要的組件之一,就是工作負載(Workload)。工作負載是基準測試最重要的特征,基于什么樣的工作負載,決定了我們的基準測試可以得到什么類型、什么樣的測試結果。
其次是一個測試的可用性(Harness),這個詞比較模糊,大致是指這個基準測試的“可依賴性”、“可使用性”,可用的基準測試才有意義,才可以得到有意義的測試數據以供進一步的分析研究。
第三個是結果報告(Reporting),也就是說我們運行基準測試之后得到的一個結果,一個基準測試的報告。報告當中一個很重要的部分就是具體的數字和指標,這具體的數字和指標我們是從系統當中測試得出的。一般來說,報告還應當包含一些額外的詳細信息,關于比如說一些額外的性能參數以及其它的一些系統的行為等等,它們可以讓我們更好地了解測試的系統,以幫助進一步的分析。
第四個是文檔(Documentation),包括用戶指南之類的說明,一個良好的文檔對于測試順利進行的作用是毋庸置疑的。
第五個是運行規則(Run Rules),這是非常重要的,一個基準測試遵循了什么樣的標準,什么樣的規范,制定了什么樣的規則,這些對公平性非常重要,而且這也應該是公開的。運行規則還有另外一個含義就是指定的測試可能使用了不同的規則,那么也需要列出。
第六個是Peer Review,同行審查,原本是學術界常用的一個術語,在工業界就不那么常見了,因此,并不是所有的基準測試都會具有這個審查。對于SPEC組織的基準測試而言,所有上傳的測試結果都會經過委員會的檢查,確保是否遵循了運行的規則,審查之后才會公開發表。這種方式對提高測試結果的可用性以及去掉一些惡意測試結果是很有用的,很大程度上也是必須的。
最后一個是Fair Use Guidelines,公平使用指南,外國人比較講究這個,但這也是基準測試必須講究的。某種程度上這是一種約束或者約定,確保測試結果可以以一種公平、合理的方式來得到使用。
綜上所述,按照這些原則就可以設計出“好”的基準測試。顯而易見的是,SPEC組織的基準測試就是按照這些規則來設計的,本次大會還花費了比較多的時間來講解SPEC CPU測試,有機會我們將會對其進行更詳細的介紹。
欲了解首屆SPEC亞洲峰會更多信息,請點擊http://www.zdnet.com.cn/spec/2016