一、功能简介
unixbench为类Unix系统的性能提供一个基本的指标,因此,被用于测试系统性能的各个方面。这些测试结果与基准系统的分数比较,产生一个指数值。综合一系列的指数值将得出系统整体指标。
如果系统是多CPU系统,默认的处理方式是运行两次测试:一次是运行每个测试程序的副本,另一次是运行N个副本,N是指CPU的核数。这样的设计,允许你评定:
-
系统运行单任务的性能
-
系统运行多任务的性能
-
实施并行处理后的收益
unixbench的测试结果不仅依赖硬件,还取决于操作系统、库甚至编译器。
二、安装unixbench
下载安装包:http://code.google.com/p/byte-unixbench/
# tar zxvf unixbench5.1.3.tgz
# cd unixbench
# make
编译时如果遇到 “Error: Please install /usr/bin/time”的错误提示,运行 apt-get install time即可(Debian为例)。
三、使用unixbench
./Run [index|arithmetic|system|misc|dhry],默认为index测试。测试结果保存在results目录下。
四、测试项目
unixbench包含很多单独的针对特定范围的测试,如下:
Dhrystone
由于没有浮点操作,这个测试主要集中在字符串处理上。这个测试深受以下因素的影响:硬件和软件设计,编译程序和链接程序选项,代码优化,高速缓冲存储器,等待状态和整数数据类型。
Whetstone
测量浮点运算速度和效率。这个测试包含几个模块,这些模块被认为是:典型运用在科学应用中的操作组成的混合体。 各种各样的C函数,包括sin、cos、sqrt、exp和log还有整形,浮点算术操作、数组访问、条件转移和过程调用都使用了。 整数和浮点算术,在这个测试中都会计算。
Execl Throughput
计算每秒钟出现的execl调用数。Execl是 exec函数家族的一部分。它用一个新的进程映像更新当前的进程映像。 它和许多其他相似的命令都是execve()的前端程序。
File Copy
这个测试测量使用不同的缓冲区大小时,数据可以从一个文件被传输到另一个的速率。文件的读写复制测试可以获得在指定时间内(默认为10秒)能够读、写、复制的字符数目。
Pipe Throughput
管道是进程间通信最简单的方式之一。管道吞吐量指的是每秒中,一个进程能将512个字节数据写入管道和从管道中回读它们的次数。这个测试在真实的程序设计中并没有对应物。
Pipe-based Context Switching
计算两个进程通过管道交换一个增长的整数的次数。基于管道的上下文切换测试更像一个真实的应用程序。这个测试产生一个可以用来继续双向管对话的子进程。
Process Creation
计算一个进程派生和收获一个马上退出的子进程的次数。由于进程创建涉及创建进程控制块和为新的进程分配内存,因此这项测试直接取决于内存带宽。这个测试一般地会用于比较各种各样的操作系统进程创建调用的执行。
Shell Scripts
测量每秒进程能够启动和收获一组1,2,4,8个shell脚本程序的并行的拷贝的次数。
System Call Overhead
这个测试是估算进入和离开操作系统内核的开销。例如执行一个系统调用的开销。它由一个简单的系统组成,这个系统重复的调用getid系统调用,getid返回调用进程的进程IS号。这个测试是用执行这些调用的时间来估算进入和离开内核的开销。
Graphical Tests
这个测试提供了2D,3D的图形化测试。报告性能不仅依赖于硬件,还与系统是否对硬件有合适的驱动程序有关 。
四、unixbench结果一览
以下数据为本机执行unixbench测试结果。
Benchmark Run: 4 CPUs; 1 parallel process
Time: 16:57:46 - 17:25:41; 27m 55s
System Benchmarks:
Test | Score | Unit | Time | Iters. | Baseline | Index |
---|---|---|---|---|---|---|
Dhrystone 2 using register variables | 1756871.9 | lps | 10.0 s | 7 | 116700.0 | 150.5 |
Double-Precision Whetstone | 335.4 | MWIPS | 10.0 s | 7 | 55.0 | 61.0 |
Execl Throughput | 706.4 | lps | 29.9 s | 2 | 43.0 | 164.3 |
File Copy 1024 bufsize 2000 maxblocks | 81724.2 | KBps | 30.0 s | 2 | 3960.0 | 206.4 |
File Copy 256 bufsize 500 maxblocks | 26262.4 | KBps | 30.0 s | 2 | 1655.0 | 158.7 |
File Copy 4096 bufsize 8000 maxblocks | 129977.4 | KBps | 30.0 s | 2 | 5800.0 | 224.1 |
Pipe Throughput | 168567.7 | lps | 10.0 s | 7 | 12440.0 | 135.5 |
Pipe-based Context Switching | 53777.1 | lps | 10.0 s | 7 | 4000.0 | 134.4 |
Process Creation | 2303.9 | lps | 30.0 s | 2 | 126.0 | 182.8 |
Shell Scripts (1 concurrent) | 1609.4 | lpm | 60.0 s | 2 | 42.4 | 379.6 |
Shell Scripts (8 concurrent) | 416.8 | lpm | 60.1 s | 2 | 6.0 | 694.7 |
System Call Overhead | 273383.6 | lps | 10.0 s | 7 | 15000.0 | 182.3 |
System Benchmarks Index Score: | 186.5 |
Benchmark Run: 4 CPUs; 4 parallel processes
Time: 17:25:41 - 17:53:41; 28m 00s
System Benchmarks:
Test | Score | Unit | Time | Iters. | Baseline | Index |
---|---|---|---|---|---|---|
Dhrystone 2 using register variables | 7022684.2 | lps | 10.0 s | 7 | 116700.0 | 601.8 |
Double-Precision Whetstone | 1339.3 | MWIPS | 10.0 s | 7 | 55.0 | 243.5 |
Execl Throughput | 2658.5 | lps | 29.9 s | 2 | 43.0 | 618.3 |
File Copy 1024 bufsize 2000 maxblocks | 112569.4 | KBps | 30.0 s | 2 | 3960.0 | 284.3 |
File Copy 256 bufsize 500 maxblocks | 32914.0 | KBps | 30.0 s | 2 | 1655.0 | 198.9 |
File Copy 4096 bufsize 8000 maxblocks | 184779.9 | KBps | 30.0 s | 2 | 5800.0 | 318.6 |
Pipe Throughput | 672667.8 | lps | 10.0 s | 7 | 12440.0 | 540.7 |
Pipe-based Context Switching | 210917.6 | lps | 10.0 s | 7 | 4000.0 | 527.3 |
Process Creation | 6986.8 | lps | 30.0 s | 2 | 126.0 | 554.5 |
Shell Scripts (1 concurrent) | 3419.1 | lpm | 60.1 s | 2 | 42.4 | 806.4 |
Shell Scripts (8 concurrent) | 348.9 | lpm | 60.3 s | 2 | 6.0 | 581.5 |
System Call Overhead | 1016900.8 | lps | 10.0 s | 7 | 15000.0 | 677.9 |
System Benchmarks Index Score: | 456.6 |