unixbench检测主机性能

unixbench 可以用来测试linux主机性能。比如租用VPS的时候,各家服务商提供的内存、CPU之类的参数可能差不多,但是实际运行程序的时候会有差异,就可以采用这个工具进行benchmark。该工具基于Perl编写,编译运行都很简单。如果不想检查显卡性能,可以在Makefile中注释掉下行,否则需要提供X11的链接库和头文件进行编译。

# GRAPHIC_TESTS = defined

然后,就可以编译运行了。

$ make
$ ./Run

运行大约半小时左右,会在该目录下的 results 目录生成测试结果。其中有一份文本记录和一份html记录。基准测试包括如下内容,并会按照使用的CPU数量,逐个生成测试报告。

  • Dhrystone 该测试用于衡量字符串操作性能,不涉及浮点运算。该测试由Reinhold Weicker在1984年开发,它很大程度上受到软硬件设计、编译器和连接器参数、代码优化、缓存和整型类型的影响。
  • Whetstone 该测试用于衡量浮点运算的效率和速度。测试由多个科学计算混合而成,其中的C程序包括sin、cons、sqrt、exp和log,以及整数和浮点数运算、数组操作、条件判断和过程调用,同时测试整数和浮点运算性能。
  • Execl Throughput 该测试用于衡量每秒钟调用execl()的次数。execl()是exec函数簇的一部分,它用一个新的进程映像替换当前的进程映像。它和许多其他类似的函数都用作execve()的前端。
  • File Copy 该测试用于衡量文件操作性能。它从文件中读取或写入不同大小的buffer,并且测试一定时间内(默认10秒)文件的读写和复制性能。
  • Pipe Throughput 该测试用于衡量管道吞吐性能。管道是进程间通信最简单的一种方式,管道吞吐量是一个进程写512bytes到管道并读取出来的次数。管道吞吐量测试并不对应真实的应用。
  • Pipe-based Context Switching 该测试用于衡量基于管道的上下文切换性能。两个进程通过一个管道传递一个自增整数,该测试类似一个真实的应用,测试程序创建一个子进程,它们之间通过管道通信。
  • Process Creation 该测试用于衡量fork()性能。在一定的时间内,一个进程可以创建并回收子进程的次数。子进程创建涉及内存分配和内存带宽。通常,该基准测试用于比较不同平台下的进程创建性能。
  • Shell Scripts 该测试用于衡量脚本运行性能。在一定时间内,一个进程可以创建一组1、2、4、8个并发shell脚本的次数,脚本中包含一组文件操作。
  • System Call Overhead 该测试用于衡量系统调用负载性能。测试进入和离开内核态的花销,由一组简单的重复系统调用getpid()构成。
  • Graphical Test 该测试包括2D和3D性能测试。目前3D测试很有限,由ubgears程序提供。这些测试只提供系统2D和3D性能的粗略估计,当然,这些性能报告不仅和系统硬件有关,也需要有合适的驱动程序。