天天看點

SPEC亞洲峰會:如何設計好的基準測試

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測試,有機會我們将會對其進行更詳細的介紹。

本文出處:暢享網

本文來自雲栖社群合作夥伴暢享網,了解相關資訊可以關注vsharing.com網站。