2009年4月13日 星期一

Benchmark

今天談談Benchmark,Benchmark的中文是基準,也有人說是標竿測試(應該用benchmark test)、測試基準,中文的意思實在很難照字面解釋。Benchmark的意思是:一些基本的方法來量測系統的效能(這是一個活動,所以英文用benchmarking)。而Benchmark通常指的是測試用的軟體工具。

在量測系統效能當中,有兩項數據重要:時間(time)比率(rate)。時間指的是反應時間(response time);比率指的是工作處理量,通常是單位時間的交易量、單位時間的回應次數,或者說是throughput。其實一個是從使用者的角度來觀看,另一個是從管理者的角度來觀看。

比率的量測中以MIPS為單位,什麼是MIPS?MIPS即Millions of instructions per second,每秒條百萬指令,通常是用來測試CPU(而CPU不太會用頻率Hz為基準比較)。要注意的是MIPS也不一定準確,因為CPU有區分RISCCISC兩種,所以用一件工作來比較,有可能產生不同效能結果。

系統效能(System Performance)是一件很複雜的事情,因為系統包含多個軟體與硬體,要量測更是困難(使用benchmark),就算我們得到其結果,要解釋其效能結果更不是一件容易的事情。

Benchmark從量測的性質來看,可以分為兩大類:粗糙基準(coarse-grain benchmark),細微基準(fine-grain benchmark)。另外,以系統角度來看可以分為四個階層(hierarchy),由內而外分別是。
  1. Basic Operations(最內層)
    加減法運算,測量CPU之類。對系統效能量測實用性低。
  2. Toy Benchmark
    用一些難解的問題(puzzle)計算。
  3. Kernels
    主要是一些程式的片段,或者函數之類。測量系統某部分的效能。
  4. Real Programs(最外層)
    最趨於真實程式的測量,也是對系統的效能量測實用性最高的。(有點廢話...)
要注意的是,每一種benchmark有不同的運用場合(domain-oriented),好比你不能拿測量CPU的軟體去測量網路頻寬,可能不能測量,就算可以,其結果也沒有什麼意義!(有點誇張的例子,但要注意且記得!)

常用的benchmark有下列單位制訂:(中文看看就好,沒有官方的中文名字,而且翻譯也怪怪的)
  • Transaction Processing Performance Council (交易處理效能機構),簡稱TPC
    有TPC-C, TPC-H, TPC-R, TPC-W
  • Standard Performance Evaluation Corporation(標準性能評估機構),簡稱SPEC。
    有SPECxxxx, SPECweb
效能測試(Performance Test)的類型基本上有3種:
  • Load Testing(負載測試)
    模擬實際的使用情形,取得測試結果,看看是不是符合要求。
  • Stress Testing(壓力測試)
    在最糟的情況下,對服務施加最大負載量。看看是不是能正常運作。
  • Spike Testing(突波測試)
    施加比平均負載高出好幾倍的量,通常施加的時間為一段小週期。
以上簡短介紹Benchmark和Performance Test。

沒有留言:

張貼留言