1.介绍
UnixBench 是一个类 Unix 系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试 Linux 系统主机的性能。UnixBench 的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。此测试的目的是对类Unix 系统提供一个基本的性能指示,很多测试用于系统性能的不同方面,这些测试的结果是一个指数值(index value,如520),这个值是测试系统的测试结果与一个基线系统测试结果比较得到的指数值,这样比原始值更容易得到参考价值,测试集合里面所有的测试得到的指数值结合起来得到整个系统的指数值。
各项的测试有得分,然后有一个综合的得分,这样可以很方便的通过分数去比较。
基线系统是“George”, 源于1995 年的一个工作站:SPARCstation 20‐61,128MB RAM,Solaris2.3,此系统的指数值被设定为10,所以,如果一个系统的最后结果分数为520,意思是指此系统比基线系统运行快52 倍。
UnixBench也支持多CPU系统的测试,默认的行为是测试两次,第一次是一个进程的测试,第二次是N份测试,N等于CPU个数。这样的设计是为了以下目标:
-
测试系统的单任务性能
-
测试系统的多任务性能
-
测试系统并行处理的能力
UnixBench一个基于系统的基准测试工具,不单纯是CPU内存或者磁盘测试工具。测试结果不仅仅取决于硬件,也取决于系统、开发库、甚至是编译器。
目前最新版本 UnixBench 5.1.3.
测试的项目有:
-
Dhrystone 2 using register variables:此项用于测试 字符串处理,因为没有浮点操作,所以深受软件和硬件设计、编译和链接、代码优化、对内存的、等待状态、整数数据类型的影响。
-
Double-Precision Whetstone:这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支和程序调用。此测试同时测试了整数和浮点数算术运算。
-
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)
2.下载安装
https://github.com/kdlucas/byte-unixbench
yum -y install gcc gcc-c++ make libXext-devel perl perl-Time-HiRes mesa-libGL-devel libX11-devel
注意:5.1.3版本较老,需要修改shell脚本才能支持并发16核以上,建议使用master分支上已修复的版本
3.测试:
#./Run
需要10-30分钟不等
测试结果:
8Core128GMem
还可以在log里面看运行结果,支持几种格式:
cd result/
更多可参考目录下 USAGE 文件。
4. 测试用例
用例编号 | unixbench-1 | 测试用例名称 | CPU性能测试 | ||
测试目的 | 验证机器性能参数 | ||||
预置条件 | 准备好测试用机器: 1.如果测试是物理机查询并记录CPU数量以及频率,内存大小,gcc版本 2.若测试为虚拟机,记录宿主机的CPU数量以及频率,内存大小,并且为虚拟机配置4个CPU,内存8GB,并且记录虚拟机的gcc版本 | ||||
测试数据说明 | 物理机和虚拟机都会默认测试两次,第一次是一个进程的测试,第二次是N份测试,N等于CPU个数,使用-c参数指定 | ||||
测试过程 | 进入Unixbench目录: # make #./Run -c 1 -c <cpu数量> | ||||
预期结果 | 显示测试结果,包括2次测试所有13项测试结果参考附件1: Dhrystone 2 using register variables(字符串处理) Double-Precision Whetstone(浮点运算) Execl Throughput(execl吞吐) File Copy 1024 bufsize 2000 maxblocks(File copy测试) File Copy 256 bufsize 500 maxblocks(File copy测试) File Copy 4096 bufsize 8000 maxblocks(File copy测试) Pipe Throughput(管道吞吐) Pipe-based Context Switching(管道的上下文交互) Process Creation(进程创建) Shell Scripts (1 concurrent)(Shell Scripts测试) Shell Scripts (8 concurrent) (Shell Scripts测试) System Call Overhead(系统调用消耗) System Benchmarks Index Score(系统综合得分) <目前还没有已确定的基准,收集大量数据以后会讨论确定下来> | ||||
测试结果 | |||||
结论 | □通过 □部分通过 □不通过 | ||||
备注 | |||||
测试人员 | 测试日期 | ||||
5.参数说明
参数说明:https://github.com/kdlucas/byte-unixbench/blob/master/UnixBench/USAGE
The Run script takes a number of options which you can use to customise a
test, and you can specify the names of the tests to run. The full usage
is:
Run [ -q | -v ] [-i ] [-c [-c ...]] [test ...]
The option flags are:
-q Run in quiet mode.
-v Run in verbose mode.
-i Run iterations for each test -- slower tests
use / 3, but at least 1. Defaults to 10 (3 for
slow tests).
-c Run copies of each test in parallel.
The -c option can be given multiple times; for example:
./Run -c 1 -c 4
will run a single-streamed pass, then a 4-streamed pass. Note that some
tests (currently the graphics tests) will only run in a single-streamed pass.
评论区