1
1

UnixBench 是一个类 unix 系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试 linux 系统主机的性能。Unixbench 的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C 库等系统基准性能提供测试数据。

最新版本 UnixBench5.1.3,包含 sys­tem 和 graphic 测试,如果你需要测试 graphic,则需要修改 Make­file, 不要注释掉”GRAPH­IC_TESTS = de­fined”,同时需要系统提供 x11perf 命令 gl_glibs 库。
下面的脚本使用了最新版 UnixBench5.1.3 来测试,注释了关于 graphic 的测试项(大多数 VPS 都是没有显卡或者是集显,所以图像性能无需测试),运行 10-30 分钟后(根据 CPU 内核数量,运算时间不等)得出分数,越高越好。

测试方法:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh

测试项目:

Dhry­s­tone 2 us­ing reg­is­ter vari­ables
此项用于测试 string han­dling,因为没有浮点操作,所以深受软件和硬件设计(hard­ware and soft­ware de­sign)、编译和链接(com­piler and linker op­tions)、代码优化(code op­ti­maza­ton)、对内存的 cache(cache mem­ory)、等待状态(wait states)、整数数据类型(in­te­ger data types)的影响。
Dou­ble-Pre­ci­sion Whet­stone
这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(con­di­tional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。

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

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

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

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

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

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

Shell Scripts
测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8。(我在测试时取 1, 8)。这个脚本对一个数据文件进行一系列的变形操作(trans­for­ma­tion)。