unixbench分析_unixbench测试CPU性能工具
UnixBench是一個類unix系(Unix,BSD,Linux)統下的性能測試工具,一個開源工具,被廣泛用與測試linux系統主機的性能。Unixbench的主要測試項目有:系統調用、讀寫、進程、圖形化測試、2D、
3D、管道、運算、C庫等系統基準性能提供測試數據。
測試項目
Dhrystone測試
測試聚焦在字符串處理,沒有浮點運算操作。
Whetstone 測試
這項測試項目用于測試浮點運算效率和速度。
Execl Throughput(execl 吞吐,這里的execl是類unix系統非常重要的函數,非辦公軟件的execl)測試
這項測試測試每秒execl函數調用次數。
File Copy測試
這項測試衡量文件數據從一個文件被傳輸到另外一個,使用大量的緩存。包括文件的讀、寫、復制測試,測試指標是一定時間內(默認是10秒)被重寫、讀、復制的字符數量。
Pipe Throughput(管道吞吐)測試
pipe是簡單的進程之間的通訊。管道吞吐測試是測試在一秒鐘一個進程寫512比特到一個管道中并且讀回來的次
數。管道吞吐測試和實際編程有差距。
Pipe-based Context Switching (基于管道的上下文交互)測試
這項測試衡量兩個進程通過管道交換和整數倍的增加吞吐的次數。基于管道的上下文切換和真實程序很類似。測試程序產生一個雙向管道通訊的子線程。
Process Creation(進程創建)測試
這項測試衡量一個進程能產生子線程并且立即退出的次數。新進程真的創建進程阻塞和內存占用,所以測試程序直接使用內存帶寬。這項測試用于典型的比較大量的操作系統進程創建操作。
Shell Scripts測試
shell腳本測試用于衡量在一分鐘內,一個進程可以啟動并停止shell腳本的次數,通常會測試1,2, 3, 4, 8 個shell腳本的共同拷貝,shell腳本是一套轉化數據文件的腳本。
System Call Overhead (系統調用消耗)測試
這項測試衡量進入和離開系統內核的消耗,例如,系統調用的消耗。程序簡單重復的執行getpid調用(返回調用的進程id)。消耗的指標是調用進入和離開內核的執行時間。
將下載的軟件包上傳至測試服務器并解壓
tar -zxvf UnixBench5.1.3.tgz
進入解壓后的文件夾,并進行編譯,
cd UnixBench
make all
編譯后得到如下Run可執行文件
3? 修改Run參數
由于工具默認只支持測試最大16線程測試,需要將Run第109行的maxCopies參數更改成系統的邏輯核數以滿足超過16線程的多線程測試;比如2P 6426配置次參數需要更改為128;
測試項目分析
測試過程中每個項目后面會有1 2 3 4 5 6 7 8 9 10 數字,意思是進行了10組測試,測試過程中部分內容及解釋如下:
Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
此項產生于 1984,測試 string handling,因為沒有浮點操作,所以深受軟件和硬件設計(hardware and software
design)、編譯和鏈接(compiler and linker options)、代碼優化(code
optimazaton)、對內存的cache(cache memory)、等待狀態(?wait states)整數數據類型(integer
data types)的影響
Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
這一項測試浮點數操作的速度和效率。這一測試包括幾個模塊,每個模塊都包括一組用于科學計算的操作。覆蓋面很廣的一系列c函數:sin,cos,sqrt,exp,log
被用于整數和浮點數的數學運算、數組訪問、條件分支(conditional branch)和程序調用。此測試同時測試了整數和浮點數算術運算。
System Call Overhead 1 2 3 4 5 6 7 8 9 10
測試進入和離開操作系統內核的代價,即一次系統調用的代價。它利用一個反復地調用 getpid 函數的小程序達到此目的。
Pipe Throughput 1 2 3 4 5 6 7 8 9 10
管道(pipe)是進程間交流的最簡單方式,這里的 Pipe throughtput 指的是一秒鐘內一個進程可以向一個管道寫 512 字節數據然后再讀回的次數。需要注意的是,pipe throughtput 在實際編程中沒有對應的真實存在。
Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
這個測試兩個進程(每秒鐘)通過一個管道交換一個不斷增長的整數的次數。這一點很向現實編程中的一些應用,這個測試程序首先創建一個子進程,再和這個子進程進行雙向的管道傳輸。
Process Creation 1 2 3
測試每秒鐘一個進程可以創建子進程然后收回子進程的次數(子進程一定立即退出)。process creation
的關注點是新進程進程控制塊(process control
block)的創建和內存分配,即一針見血地關注內存帶寬。一般說來,這個測試被用于對操作系統進程創建這一系統調用的不同實現的比較。
Execl Throughput 1 2 3
此測試考察每秒鐘可以執行的 execl 系統調用的次數。 execl 系統調用是 exec 函數族的一員。它和其他一些與之相似的命令一樣是 execve() 函數的前端。
File copy
測試從一個文件向另外一個文件傳輸數據的速率。每次測試使用不同大小的緩沖區。這一針對文件 read、write、copy 操作的測試統計規定時間(默認是 10s)內的文件 read、write、copy 操作次數。
9. Shell Scripts
測試一秒鐘內一個進程可以并發地開始一個 shell 腳本的 n 個拷貝的次數,n 一般取值 1,2,4,8.(我的系統上取 1, 8, 16)。這個腳本對一個數據文件進行一系列的變形操作(?transformation)。
對于多cpu系統的性能測試策略,需要統計單任務,多任務及其并行的性能增強。
以8個cpu的PC為例,需要測試兩次,8個CPU就是要并行執行8個copies,
【Run -c 1 -c 8】表示執行兩次,第一次單個copies,第二次8個copies的測試任務。
結果分析
總結
以上是生活随笔為你收集整理的unixbench分析_unixbench测试CPU性能工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: picturebox 图片自适应
- 下一篇: 博客园访问量有些小,我就没有必要在复制一