UnixBench测试结果的解释

UnixBench测试结果的解释

1. ***********************

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)的影响

2. ********************

Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10

这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。

3. **************

System Call Overhead 1 2 3 4 5 6 7 8 9 10

测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。

4. ***************

Pipe Throughput 1 2 3 4 5 6 7 8 9 10

管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。

5. *************

Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10

这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。

6. ************

Process Creation 1 2 3

测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。

7. ***********

Execl Throughput 1 2 3

此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。

8. ***********

File copy

测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。

9. **********

Shell Scripts

测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8.(我的系统上取 1, 8, 16)。这个脚本对一个数据文件进行一系列的变形操作(transformation)

10. *********

Arithmetic Test

11. *************

Arithoh 1 2 3

12. *************

C Compiler Throughput 1 2 3

13. *************

Dc: sqrt(2) to 99 decimal places 1 2 3

sqrt(2) 到 99 位小数

14. *************

Recursion Test–Tower of Hanoi 1 2 3

15. *************

join: file 2 is not in sorted order

join: file 1 is not in sorted order

在 Linux 中利用 UnixBench 進行性能測試

UnixBench是一款開源的測試unix 系統基本性能的工具,是比較通用的測試VPS性能的工具. UnixBench會執行一系列的測試,包括2D和3D圖形系統的性能衡量,測試的結果不僅僅只是CPU,內存,或者磁盤為基準,還取決於硬件,操作系統版本,編譯器.

UnixBench是一個類unix系(Unix,BSD,Linux)統下的性能測試工具,一個開源工具,被廣泛用與測試linux系統主機的性能。Unixbench的主要測試項目有:系統調用、讀寫、進程、圖形化測試、2D、3D、管道、運算、C庫等系統基準性能提供測試數據。

最新版本UnixBench5.1.3,包含system和graphic測試,如果你需要測試graphic,則需要修改Makefile,不要註釋掉”GRAPHIC_TESTS = defined”,同時需要係統提供x11perf命令gl_glibs庫。
下面的腳本使用了最新版UnixBench5.1.3來測試,註釋了關於graphic的測試項(大多數VPS都是沒有顯卡或者是集顯,所以圖像性能無需測試),運行10-30分鐘後(根據CPU內核數量,運算時間不等)得出分數,越高越好。

测试项目:
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)。
下面是我的一个512MB,2核,OpenVZ的VPS的跑分结果:

BYTE UNIX Benchmarks (Version 5.1.3)
System: vpn: GNU/Linux
OS: GNU/Linux — 2.6.32-042stab076.8 — #1 SMP Tue May 14 20:38:14 MSK 2013
Machine: i686 (i386)
Language: en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″)
CPU 0: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (4533.6 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
CPU 1: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (4533.6 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
09:41:17 up 31 days, 9:21, 1 user, load average: 0.23, 0.05, 0.02; runlevel 3
————————————————————————
Benchmark Run: Mon Jul 29 2013 09:41:17 – 10:09:29
2 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 17172222.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2600.2 MWIPS (10.0 s, 7 samples)
Execl Throughput 4152.8 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 622759.5 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 172634.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1218236.9 KBps (30.0 s, 2 samples)
Pipe Throughput 1416230.5 lps (10.0 s, 7 samples)
Pipe-based Context Switching 206509.4 lps (10.0 s, 7 samples)
Process Creation 8568.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 3145.9 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 528.3 lpm (60.0 s, 2 samples)
System Call Overhead 1528474.7 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 17172222.3 1471.5
Double-Precision Whetstone 55.0 2600.2 472.8
Execl Throughput 43.0 4152.8 965.8
File Copy 1024 bufsize 2000 maxblocks 3960.0 622759.5 1572.6
File Copy 256 bufsize 500 maxblocks 1655.0 172634.3 1043.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 1218236.9 2100.4
Pipe Throughput 12440.0 1416230.5 1138.4
Pipe-based Context Switching 4000.0 206509.4 516.3
Process Creation 126.0 8568.6 680.0
Shell Scripts (1 concurrent) 42.4 3145.9 742.0
Shell Scripts (8 concurrent) 6.0 528.3 880.5
System Call Overhead 15000.0 1528474.7 1019.0
========
System Benchmarks Index Score 960.4
————————————————————————
Benchmark Run: Mon Jul 29 2013 10:09:29 – 10:39:56
2 CPUs in system; running 2 parallel copies of tests
Dhrystone 2 using register variables 16851634.7 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5182.9 MWIPS (10.0 s, 7 samples)
Execl Throughput 4101.9 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 635244.9 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 174430.2 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1219982.0 KBps (30.0 s, 2 samples)
Pipe Throughput 1387297.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 196296.1 lps (10.0 s, 7 samples)
Process Creation 10889.9 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4073.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 550.5 lpm (60.2 s, 2 samples)
System Call Overhead 1538517.4 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 16851634.7 1444.0
Double-Precision Whetstone 55.0 5182.9 942.3
Execl Throughput 43.0 4101.9 953.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 635244.9 1604.2
File Copy 256 bufsize 500 maxblocks 1655.0 174430.2 1054.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 1219982.0 2103.4
Pipe Throughput 12440.0 1387297.9 1115.2
Pipe-based Context Switching 4000.0 196296.1 490.7
Process Creation 126.0 10889.9 864.3
Shell Scripts (1 concurrent) 42.4 4073.7 960.8
Shell Scripts (8 concurrent) 6.0 550.5 917.5
System Call Overhead 15000.0 1538517.4 1025.7
========
System Benchmarks Index Score

在Linux中使用unixbench來測試測試系統性能

unixbench是什麼?
  unixbench是一套unix系統基准測試套件。

unixbench的設計目標是為類unix系統提供一套基本的指標,所以有許多項目測試系統各方面的性能。各項的測試有得分,然後有一個綜合的得分,這樣可以很方便的通過分數去比較。

  unixbench也包含一些非常簡單的2D和3D圖形測試。
  unixbench也支持多CPU系統的測試,默認的行為是測試兩次,第一次是一個進程的測試,第二次是N份測試,N等於CPU個數。這樣的設計是為了以下目標:
  測試系統的單任務性能
  測試系統的多任務性能
  測試系統並行處理的能力

  unixbench一個基於系統的基准測試工具,不單純是CPU 內存 或者磁盤測試工具。測試結果不僅僅取決於硬件,也取決於系統、開發庫、甚至是編譯器。

  測試項目

  Dhrystone測試
  測試聚焦在字符串處理,沒有浮點運算操作。這個測試用於測試鏈接器編譯、代碼優化、內存緩存、等待狀態、整數數據類型等,硬件和軟件設計都會非常大的影響測試結果。

  Whetstone 測試
  這項測試項目用於測試浮點運算效率和速度。這項測試項目包含若干個科學計算的典型性能模塊,包含大量的C語言函數,sin cos sqrt exp和日志以及使用整數和浮點的數學操作。包含數組訪問、條件分支和過程調用。

  Execl Throughput(execl 吞吐,這裡的execl是類unix系統非常重要的函數,非辦公軟件的execl)測試

  這項測試測試每秒execl函數調用次數。execl是 exec函數家族的一部分,使用新的圖形處理代替當前的圖形處理。有許多命令和前端的execve()函數命令非常相似。

  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)。消耗的指標是調用進入和離開內核的執行時間。

  Graphical Tests(圖形)測試
  由”ubgears”程序組成,測試非常粗的2D和3D圖形性能,尤其是3D測試非常有限。測試結果和硬件,系統合適的驅動關系很大。