本帖最后由 x1816 于 2016-10-26 21:25 编辑
测试介绍
================================
UnixBench源于1995 年,基线系统是“George”,一个工作站:SPARCstation 20‐61,128MB RAM,Solaris2.3,此系统的指数值被设定为10,所以,如果一个系统的最后结果分数为520,意思是指此系统比基线系统运行快52 倍。
UnixBench也支持多CPU系统的测试,默认的行为是测试两次,第一次是一个进程的测试,第二次是N份测试,N等于CPU个数。这样的设计是为了以下目标:
测试系统的单任务性能
测试系统的多任务性能
测试系统并行处理的能力
UnixBench一个基于系统的基准测试工具,不单纯是CPU 内存 或者磁盘测试工具。测试结果不仅仅取决于硬件,也取决于系统、开发库、甚至是编译器。
Dhrystone测试
测试聚焦在字符串处理,没有浮点运算操作。这个测试用于测试链接器编译、代码优化、内存缓存、等待状态、整数数据类型等,硬件和软件设计都会非常大的影响测试结果。
Whetstone 测试
这项测试项目用于测试浮点运算效率和速度。这项测试项目包含若干个科学计算的典型性能模块,包含大量的C语言函数,sin cos sqrt exp和日志以及使用整数和浮点的数学操作。包含数组访问、条件分支和过程调用。
Execl Throughput测试
(execl 吞吐,这里的execl是类unix系统非常重要的函数,非办公软件的excel)
这项测试测试每秒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)。消耗的指标是调用进入和离开内核的执行时间。
================================
测试方法
首先确保被测试系统干净,没有后台大量占用资源的程序在运行。比较简单的方法是烧写一个新系统,做简单必要配置后,重启,就是一个干净的测试平台。如果是对比测试,把能控制的因素都控制成相同。比如测试Raspberry 2和3的时候,就可以使用同一张存储卡,系统版本也要保持一致。
把测试软件传到被测系统中,可以通过FTP等方法传输。
解压缩tar.gz包:
- tar -xvf unixbench-5.1.2.tar.gz
- cd unixbench-5.1.2
复制代码如果是针对服务器等非图形环境的测试,需要关掉图形测试。
编辑文件Makefile
注释掉GRAPHIC_TESTS = defined这一行,也就是在这一行开头加个“#”号。我这个版本是在第46行。
保存文件。
编译
如果没有错误,就可以运行测试了
在Raspberry上测试一次的时间大约是半小时左右。测试完成后,结果会在屏幕上显示出来,也可以在results目录里找到保存测试结果和相关log。
文件USAGE里写了更详细的测试参数,部分参数如下图
如果是一般测试,使用没有参数的默认设置就可以了,在多核系统上,软件会测试单核性能和多核性能各1次。
为了严谨起见,这样的测试应该测试多次,然后分数取平均值。不过既然是非专业测试,通常测试几次后发现分数比较稳定后,取其中一次作代表就可以了。如果分数波动很大,那就需要找找原因了。
附件
本次测试使用的软件已作为附件上传。