UnixBench是一种unix类(unix、BSD、Linux ) ) )、开源工具,广泛用于测试Linux系统主机的性能。 Unixbench的主要测试项目包括系统调用、读写、流程、图形测试、2D、
3D、管道、运算、c库等系统基准性能提供测试数据。
测试项目
Dhrystone测试
测试聚焦于字符串处理,没有浮点运算操作。
微尘测试
此测试项用于测试浮点运算的效率和速度。
execlthroughput(execl吞吐量,这里的execl是类unix系统的一个非常重要的函数,非办公软件的execl )测试
此测试是每秒调用execl函数的次数。
文件复制测试
此测试将文件数据从一个文件传输到另一个文件,并使用大量缓存。 包括文件的读写、复制测试,测试指标为一定时间内(默认值为10秒)改写、读取、复制的字符数。
管道吞吐量测试
pipe是一种简单的进程之间的通信。 管道吞吐量测试是每秒钟在一个进程中将512位写入和读取到一个管道的次数
我来数。 管道吞吐量测试和实际编程存在差异。
基于管道的上下文交换测试
此测试测量两个过程在管道更换和整数倍时增加吞吐量的次数。 基于管道的上下文开关与实际程序非常相似。 测试程序生成双向管道通信的子线程。
处理创建测试
此测试测量进程生成子线程并可以立即终止的次数。 因为新进程真的会创建进程块和内存消耗,所以测试程序直接使用内存带宽。 此测试用于常见的相对大量的操作系统进程创建操作。
测试shell脚本
shell脚本测试用于测量一分钟内一个进程可以启动和停止shell脚本的次数。 通常会测试1、2、3、4和8个shell脚本的公共副本。 shell脚本是一组用于转换数据文件的脚本。
系统调用消耗测试
此测试测量系统内核的访问和退出消耗,包括系统调用的消耗。 程序简单地重复执行getpid调用(返回调用的进程id )。 的指标是调用和退出内核的执行时间。
将下载的软件包上传到测试服务器并解压缩
tar -zxvf UnixBench5.1.3.tgz
进入解压缩的文件夹,进行编译,
cd UnixBench
化妆艺术
编译后,将得到以下Run可执行文件
更改Run参数
默认情况下,该工具最多只支持16个线程的测试,因此为了满足超过16个线程的多线程测试,必须将Run的第109行中的maxCopies参数更改为系统的逻辑内核数。 例如,2P 6426配置子参数需要改变为128;
测试项目分析
测试中每个项目后面都有1 2 3 4 5 6 7 8 9 10个数字。 这意味着进行了10组测试。 测试中的部分内容和说明如下。
dhrystone2usingregistervariables 1234568910
这个项目诞生于1984年,测试了字符串处理。 由于没有浮点操作,所以由软件和硬件设计(
设计)、编译和链接(compiler and linker options )、代码优化(code )。
优化(,内存缓存),等待状态)? 等待状态(整数数据类型(integer ) ) ) ) ) ) ) )。
数据类型) )的影响
双精度whetstone 12345678910
测试浮点数操作的速度和效率。 这个测试包含几个模块,每个模块都包含一系列用于科学计算的操作。 覆盖范围广的一系列c函数: sin、cos、sqrt、exp、log
用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch )和程序调用。 该测试同时测试了整数和浮点数的算术运算。
系统呼叫开销123456789 10
测试操作系统内核访问和退出的成本,即一次系统调用的成本。 这是通过使用一个反复调用getpid函数的小程序来实现的。
Pipe Throughput 1 2 3 4 5 6 7 8 9 10
管道(pipe )是进程之间交流的最简单方法,此处的Pipe throughtput是指一个进程每秒可以在一个管道上写回512字节的数据的次数。 需要注意的是,pipe throughtput在实际编程中没有对应的实际存在
。Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。
Process Creation 1 2 3
测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation
的关注点是新进程进程控制块(process control
block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。
Execl Throughput 1 2 3
此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。
File copy
测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。
9. Shell Scripts
测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8.(我的系统上取 1, 8, 16)。这个脚本对一个数据文件进行一系列的变形操作(?transformation)。
对于多cpu系统的性能测试策略,需要统计单任务,多任务及其并行的性能增强。
以8个cpu的PC为例,需要测试两次,8个CPU就是要并行执行8个copies,
【Run -c 1 -c 8】表示执行两次,第一次单个copies,第二次8个copies的测试任务。
结果分析