使用 UnixBench 進行 Ubuntu 系統基準測試
通常,在我們需要採購新設備、或者準備升級設備的時候,總是希望對設備進行一系列的性能評估,除了直接看硬體參數,比較理性、簡單的方法就是能有一個測試軟體來為我們的硬體系統平台打個分,然後我們就可以根據這個數量化的結果來進行決策。這種方式對於個人或者一些小團隊而言,更顯得方便而又重要,因為個人和小團隊都不太可能找設備供應商拿到足夠的售前支持,或者去做專業的評估,而這種「跑個分」的方式不失為是一種既省成本又有效的辦法。
恰好,最近剛完成了工作室里的伺服器維護,其中有一台老舊的 Dell R410 重裝了新系統,剛配置好環境,可以用來演示一下 UnixBench 的使用方法。
UnixBench 的安裝
我第一次接觸 UnixBench 的時候,並不知道有一鍵安裝腳本,當時的教程是需要下載源碼包,然後需要自己修改配置文件然後編譯,受限於當時的能力水平,沒有順利編譯完成,後來由於這個事情不太緊急,就不了了之了。最近偶然看到一篇文章,裡面講解了如何使用一件安裝腳本,嘗試了一下,方法的確比較簡單,幾乎不用什麼操作就可以完成,以下將介紹以下該方法。
# 下載一鍵安裝腳本wget http://teddysun.com/wp-content/uploads/unixbench.sh# 為腳本添加執行許可權chmod +x unixbench.sh# 運行腳本 腳本運行會先檢查依賴,會自動完成安裝,這裡需要 root 許可權sudo bash ./unixbench.sh
完成上述步驟,基準測試將自動開始。
測試
測試開始後,軟體會自動進行各項測試,並為其評分,測試完成後,將會輸出一個測試報表結果,以我的 Dell R410,配置為 E5507 16G內存,146G SAS Raid 0為例,結果如下:
======================================================================== BYTE UNIX Benchmarks (Version 5.1.3) System: WosDevServer: GNU/Linux OS: GNU/Linux -- 4.4.0-119-generic -- #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 Machine: x86_64 (x86_64) Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8") CPU 0: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4522.0 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 1: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4521.8 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 2: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4522.0 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 3: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4521.8 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 4: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4522.0 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 5: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4521.8 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 6: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4522.0 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization CPU 7: Intel(R) Xeon(R) CPU E5507 @ 2.27GHz (4521.8 bogomips) Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization 09:42:18 up 16:37, 1 user, load average: 0.58, 0.14, 0.05; runlevel 5------------------------------------------------------------------------Benchmark Run: Wed Apr 18 2018 09:42:18 - 10:10:358 CPUs in system; running 1 parallel copy of testsDhrystone 2 using register variables 22890258.0 lps (10.0 s, 7 samples)Double-Precision Whetstone 2974.5 MWIPS (9.9 s, 7 samples)Execl Throughput 2009.3 lps (30.0 s, 2 samples)File Copy 1024 bufsize 2000 maxblocks 356519.6 KBps (30.0 s, 2 samples)File Copy 256 bufsize 500 maxblocks 99637.7 KBps (30.0 s, 2 samples)File Copy 4096 bufsize 8000 maxblocks 962479.7 KBps (30.0 s, 2 samples)Pipe Throughput 511868.4 lps (10.0 s, 7 samples)Pipe-based Context Switching 123716.9 lps (10.0 s, 7 samples)Process Creation 3374.2 lps (30.0 s, 2 samples)Shell Scripts (1 concurrent) 6240.7 lpm (60.0 s, 2 samples)Shell Scripts (8 concurrent) 3324.5 lpm (60.0 s, 2 samples)System Call Overhead 509821.0 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEXDhrystone 2 using register variables 116700.0 22890258.0 1961.5Double-Precision Whetstone 55.0 2974.5 540.8Execl Throughput 43.0 2009.3 467.3File Copy 1024 bufsize 2000 maxblocks 3960.0 356519.6 900.3File Copy 256 bufsize 500 maxblocks 1655.0 99637.7 602.0File Copy 4096 bufsize 8000 maxblocks 5800.0 962479.7 1659.4Pipe Throughput 12440.0 511868.4 411.5Pipe-based Context Switching 4000.0 123716.9 309.3Process Creation 126.0 3374.2 267.8Shell Scripts (1 concurrent) 42.4 6240.7 1471.9Shell Scripts (8 concurrent) 6.0 3324.5 5540.8System Call Overhead 15000.0 509821.0 339.9 ========System Benchmarks Index Score 768.0------------------------------------------------------------------------Benchmark Run: Wed Apr 18 2018 10:10:35 - 10:38:548 CPUs in system; running 8 parallel copies of testsDhrystone 2 using register variables 181646934.4 lps (10.0 s, 7 samples)Double-Precision Whetstone 23770.7 MWIPS (9.9 s, 7 samples)Execl Throughput 17323.7 lps (29.9 s, 2 samples)File Copy 1024 bufsize 2000 maxblocks 622988.4 KBps (30.0 s, 2 samples)File Copy 256 bufsize 500 maxblocks 167131.8 KBps (30.0 s, 2 samples)File Copy 4096 bufsize 8000 maxblocks 1762630.6 KBps (30.0 s, 2 samples)Pipe Throughput 4066846.5 lps (10.0 s, 7 samples)Pipe-based Context Switching 1014461.5 lps (10.0 s, 7 samples)Process Creation 43249.7 lps (30.0 s, 2 samples)Shell Scripts (1 concurrent) 40928.1 lpm (60.0 s, 2 samples)Shell Scripts (8 concurrent) 5324.5 lpm (60.0 s, 2 samples)System Call Overhead 3115517.6 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEXDhrystone 2 using register variables 116700.0 181646934.4 15565.3Double-Precision Whetstone 55.0 23770.7 4322.0Execl Throughput 43.0 17323.7 4028.8File Copy 1024 bufsize 2000 maxblocks 3960.0 622988.4 1573.2File Copy 256 bufsize 500 maxblocks 1655.0 167131.8 1009.9File Copy 4096 bufsize 8000 maxblocks 5800.0 1762630.6 3039.0Pipe Throughput 12440.0 4066846.5 3269.2Pipe-based Context Switching 4000.0 1014461.5 2536.2Process Creation 126.0 43249.7 3432.5Shell Scripts (1 concurrent) 42.4 40928.1 9652.9Shell Scripts (8 concurrent) 6.0 5324.5 8874.1System Call Overhead 15000.0 3115517.6 2077.0 ========System Benchmarks Index Score 3702.0======= Script description and score comparison completed! =======
為了進行對比,我同時也在我的開發機上運行了一個虛擬機進行測試,虛擬機設置了單核 CPU,2G 內存,測試結果如下:
======================================================================== BYTE UNIX Benchmarks (Version 5.1.3) System: ubuntu: GNU/Linux OS: GNU/Linux -- 4.4.0-119-generic -- #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 Machine: x86_64 (x86_64) Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8") CPU 0: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz (6411.1 bogomips) x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET 10:45:37 up 2 min, 1 user, load average: 0.22, 0.07, 0.02; runlevel 5------------------------------------------------------------------------Benchmark Run: Wed Apr 18 2018 10:45:37 - 11:13:491 CPU in system; running 1 parallel copy of testsDhrystone 2 using register variables 40453839.7 lps (10.0 s, 7 samples)Double-Precision Whetstone 2933.5 MWIPS (9.9 s, 7 samples)Execl Throughput 5999.9 lps (30.0 s, 2 samples)File Copy 1024 bufsize 2000 maxblocks 818195.6 KBps (30.0 s, 2 samples)File Copy 256 bufsize 500 maxblocks 246488.8 KBps (30.0 s, 2 samples)File Copy 4096 bufsize 8000 maxblocks 1618077.0 KBps (30.0 s, 2 samples)Pipe Throughput 1298128.5 lps (10.0 s, 7 samples)Pipe-based Context Switching 218737.5 lps (10.0 s, 7 samples)Process Creation 15710.1 lps (30.0 s, 2 samples)Shell Scripts (1 concurrent) 10794.3 lpm (60.0 s, 2 samples)Shell Scripts (8 concurrent) 1405.5 lpm (60.0 s, 2 samples)System Call Overhead 1217286.8 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEXDhrystone 2 using register variables 116700.0 40453839.7 3466.5Double-Precision Whetstone 55.0 2933.5 533.4Execl Throughput 43.0 5999.9 1395.3File Copy 1024 bufsize 2000 maxblocks 3960.0 818195.6 2066.2File Copy 256 bufsize 500 maxblocks 1655.0 246488.8 1489.4File Copy 4096 bufsize 8000 maxblocks 5800.0 1618077.0 2789.8Pipe Throughput 12440.0 1298128.5 1043.5Pipe-based Context Switching 4000.0 218737.5 546.8Process Creation 126.0 15710.1 1246.8Shell Scripts (1 concurrent) 42.4 10794.3 2545.8Shell Scripts (8 concurrent) 6.0 1405.5 2342.5System Call Overhead 15000.0 1217286.8 811.5 ========System Benchmarks Index Score 1435.0======= Script description and score comparison completed! =======
由於虛擬機僅配置了單核 CPU,因此這裡只有 1 parallel
單線程測試,並沒有上面伺服器中的多線程測試。我們可以從兩份結果對比得出,由於不同世代的 CPU 技術差異,這裡的 I5-4570 的單核表現與 XEON-E5507相比幾乎是性能翻倍。
評估
以上的測試給出的分數,我們可以作為評估的依據,但實際決策中,還需要考慮其他的情況。如伺服器的安放、穩定性以及一起其他的功能,比如 Dell 的伺服器支持 iDrac 遠程控制,可以通過網路控制伺服器開關、重啟以及監控設備運行情況等。如果單從運算性能看,可能會組裝一台 i5 的電腦性能更好,但如遇停電、或者死機的情況,沒有遠程控制維護伺服器,那麼就需要考慮其他的處理方案。
小結
本篇文章介紹了如何安裝及使用 UnixBench,以及簡單介紹了如何以一種比較低成本的方式來評估設備情況,希望能對大家有所幫助。
參考資料
《基於Linux系統的性能測試》 《Linux性能測試工具-UnixBench--安裝以及結果分析》
推薦閱讀:
※Ubuntu 調優與美化教程
※Ubuntu 進軍移動市場可以在哪些方面取得優勢?
※如何在超極本上安裝 Linux 發行版?
※Debian 取代 Ubuntu 成為 Google 內部 Linux 發行版的新選擇
※想學深度學習,先會安裝cuda吧(ubuntu16.04+cuda8.0)