本文於 2021-09-04 11:03 更新,部分內容具有時效性,如有失效,請留言
本文記錄一下 Linux VPS/服務器上面使用 UnixBench 腳本進行跑分的方法。UnixBench 是一個類 Unix 系統(Unix,BSD,Linux)下的開源性能測試工具,被廣泛用與測試 Linux 系統主機的性能。Unixbench 的主要測試項目有:系統調用、讀寫、進程、圖形化測試、2D、3D、管道、運算、C 庫等系統基準性能提供測試數據。
一、UnixBench 測試方法
下面是 UnixBench 測試方法(來源)。
wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh chmod +x unixbench.sh ./unixbench.sh
登錄 VPS 之後,輸入上面的腳本回車即可開始測試。
二、UnixBench 測試項目
UnixBench 主要測試以下幾個方面內容:
- Dhrystone 2 using register variables
此項用於測試 string handling,因為沒有浮點操作,所以深受軟件和硬件設計(hardware and software design)、編譯和鏈接(compiler and linker options)、代碼優化(code optimazaton)、對內存的cache(cache memory)、等待狀態(wait states)、整數數據類型(integer data types)的影響。 - Double-Precision Whetstone
這一項測試浮點數操作的速度和效率。這一測試包括幾個模塊,每個模塊都包括一組用於科學計算的操作。覆蓋面很廣的一系列 c 函數:sin,cos,sqrt,exp,log 被用於整數和浮點數的數學運算、數組訪問、條件分支(conditional branch)和程序調用。此測試同時測試了整數和浮點數算術運算。 - Execl Throughput
此測試考察每秒鐘可以執行的 execl 系統調用的次數。 execl 系統調用是 exec 函數族的一員。它和其他一些與之相似的命令一樣是 execve() 函數的前端。 - File copy
測試從一個文件向另外一個文件傳輸數據的速率。每次測試使用不同大小的緩衝區。這一針對文件 read、write、copy 操作的測試統計規定時間(默認是 10s)內的文件 read、write、copy 操作次數。 - Pipe Throughput
管道(pipe)是進程間交流的最簡單方式,這裡的 Pipe throughtput 指的是一秒鐘內一個進程可以向一個管道寫 512 字節數據然後再讀回的次數。需要注意的是,pipe throughtput 在實際編程中沒有對應的真實存在。 - Pipe-based Context Switching
這個測試兩個進程(每秒鐘)通過一個管道交換一個不斷增長的整數的次數。這一點很向現實編程中的一些應用,這個測試程序首先創建一個子進程,再和這個子進程進行雙向的管道傳輸。 - Process Creation
測試每秒鐘一個進程可以創建子進程然後收回子進程的次數(子進程一定立即退出)。process creation 的關注點是新進程進程控制塊(process control block)的創建和內存分配,即一針見血地關注內存帶寬。一般說來,這個測試被用於對操作系統進程創建這一系統調用的不同實現的比較。 - System Call Overhead
測試進入和離開操作系統內核的代價,即一次系統調用的代價。它利用一個反覆地調用 getpid 函數的小程序達到此目的。 - Shell Scripts
測試一秒鐘內一個進程可以併發地開始一個 shell 腳本的 n 個拷貝的次數,n 一般取值 1,2,4,8。(我在測試時取 1, 8)。這個腳本對一個數據文件進行一系列的變形操作(transformation)。
三、UnixBench 測試結果
下面是測試結果,測試所需時間根據 VPS 或者服務器的性能來定,一般都需要幾十分鐘甚至幾小時。