UnixBench 介绍

UnixBench 是一个类 unix (Unix, BSD, Linux 等) 系统下的性能测试工具,它是一个开源工具。可以用于测试系统主机的性能。

UnixBench 进行的测试不仅仅是 CPU 的测试,其测试结果反映的是一台主机的综合性能。从理论上说,UnixBench 的测试结果与被测试主机的 CPU、内存、存储、操作系统都有直接的关系,但受到 CPU 的影响更大一些。

因此,我们采用 UnixBench 来测试虚拟机的 CPU 性能。

由于性能与硬件有很大的关系,而虚拟机的 CPU 等设备由宿主机提供,那么,理论上:虚拟机的性能不可能高于其宿主机的性能,如果在虚拟机上的测试结果与在宿主机上的测试结果接近,我们将认为虚拟机获得了良好的性能,资源得到了充分的利用。

UnixBench 测试项目介绍 

Dhrystone 2 using register variables

用于测试和比较计算机之间的性能。由于该项测试中没有浮点操作,它主要关注的是字符串处理,深受硬件和软件设计、编译和链接、代码优化、内存 cache、等待状态和整数数据类型的影响。

Double-Precision Whetstone

该项测试用于测量浮点操作的速度和效率。这项测试包含了几个模块,一般在科学应用中表现为混合操作。其中有各种各样的 C 函数,包括 sin, cos, sqrt, exp 以及 log,用于整数和浮点的数学运算、数组访问、条件分支和程序调用。该项测试同时测量了整数和浮点的运算。

Execl Throughput

该项测试测量每秒可执行的 excel 调用次数。excel 是 exec 函数族的成员之一,它将当前处理的图像替换为新的图像。它和其他一些与之相似的命令都是 execve() 函数的前端。

File Copy

使用不同大小的缓冲区,测量从一个文件向另一个文件传输数据的速率。对文件读、写、复制的操作进行测试,从而获得文件在特定时间内(默认是 10 秒)进行写、读和复制操作的字符数目。

Pipe Throughput

管道是进程交流中最简单的一种方式。Pipe Throughput(管道吞吐量)是指进程(每秒)能够将 512 字节写入管道并读取返回的次数。但是,管道吞吐量在现实世界的编程中并没有真正的对应。

Pipe-based Context Switching

该项测试测量两个进程之间(每秒)通过管道交换一个不段增长的整数的次数。基于管道的上下文切换更像是一个真实的应用程序。这个测试程序创建一个子进程,再与这个子进程进行双向管道传输。

Process Creation

该项测试测量一个进程可以创建然后收回子进程的次数(子进程立即退出)。Process Creation 是指实际创建进程控制块并为新进程分配内存,因此这可以直接测试内存带宽。一般来说,这项测试用于比较操作系统进程创建调用的不同实现。

Shell Scripts

该项用于测试每分钟内一个进程可以并发地开始并获得一个 shell 脚本的 N 个拷贝的次数,N 取值为 1, 2, 4, 8。这个脚本对一个数据文件进行一系列的变形操作。

System Call Overhead

该项估计进入和离开操作系统内核的成本,即进行系统调用的开销。它由一个简单的程序反复调用系统调用函数 getpid (这将返回所调用进程的 id),执行这一调用的时间来估计进入和退出内核的成本。

Graphical Tests

可以提供 2D 和 3D 图形,目前,特别是 3D 套件是非常有限的,它由 “ubgears” 组成。这些测试的目的是提供非常粗略的 2D 和 3D 的图形性能。但是,所报告的性能不仅取决于硬件,还取决于系统中是否有合适的驱动。

UnixBench 的安装

UnixBench 的安装非常简单,见如下步骤:

  1. https://code.google.com/p/byte-unixbench/downloads/list 中将下载压缩包到本地;
  2. 解压文件:
    $ tar -xzf UnixBench5.1.3.tgz
  3. 切换到目录下,即可执行 ./Run 开始测试。