The goal of UnixBench is to present a basic sign of the performance of a Unix-like system; hence, various tests are used to test multiple aspects of the system's performance. These test outcomes are then compared to the scores from a baseline system to produce an index value, which is generally easier to handle than the raw scores.
Some very simple graphics tests are included to measure the 2D and 3D graphics performance of the system.
Multi-CPU systems are handled. If your system has various CPUs, the default response is to run the selected tests twice; once with one copy of each test program running at a time, and once with N copies, where N is the number of CPUs. This is designed to allow you to assess:
- the performance of your system when running a single task
- the performance of your system when running multiple tasks
- the gain from your system's implementation of parallel processing
UnixBench consists of a number of individual tests that are targeted at specific areas. Here is a summary of what each test does:
Dhrystone remains remarkably resilient as a simple benchmark and establishing true performance. It is easy to use, fully self-contained, well understood, and can be made to work on almost any system. Contains no floating point operations instead, focuses on string handling. The output from the benchmark the number of iterations of the main code loop per second. It is heavily influenced by hardware and software design, compiler and linker options, code optimization, cache memory, wait states, and integer data types.
The primary aim of this benchmark is to provide a performance measure of both floating point (FP) and integer arithmetic. The wide variety of standard functions exercised in abs, sqrt, exp, alog, sin, cos, and tan is used as well as array accesses, conditional branches, and procedure calls. This test contains several modules that are meant to represent a mix of operations typically performed in scientific applications.
This test measures the number of excel calls that can be performed per second. Excel is part of the exec family of functions that replaces the current process image with a new process image. It and many other similar commands are frontends for the function execve().
This measures the rate at which data can be transferred from one file to another, using various buffer sizes. The file read, write and copy tests capture the number of characters that can be written, read and copied in a specified time (default is 10 seconds).
A pipe is the simplest form of communication between processes. Pipe throughput is the number of times (per second) a process can write 512 bytes to a pipe and read them back. The pipe throughput test has no real counterpart in real-world programming.
Pipe-based Context Switching:
This test measures the number of times two processes can exchange an increasing integer through a pipe. The pipe-based context switching test is more like a real-world application. The test program spawns a child process with which it carries on a bi-directional pipe conversation.
This test measures the number of times a process can fork and reap a child that immediately exits. Process creation refers to actually creating process control blocks and memory allocations for new processes, so this applies directly to memory bandwidth. Typically, this benchmark would be used to compare various implementations of operating system process creation calls.
The shells scripts test measures the number of times per minute a process can start and reap a set of one, two, four and eight concurrent copies of shell scripts where the shell script applies a series of transformation to a data file.
System Call Overhead:
Estimates the cost of entering and leaving the operating system kernel, i.e. the overhead for performing a system call. It consists of a simple program repeatedly calling the getpid (which returns the process id of the calling process) system call. The time to execute such calls is used to estimate the cost of entering and exiting the kernel.
Both 2D and 3D graphical tests are provided; at the moment, the 3D suite, in particular, is very limited, consisting of the “ubgears” program. These tests are intended to provide a very rough idea of the system’s 2D and 3D graphics performance. Bear in mind, of course, that the reported performance will depend not only on hardware but on whether your system has appropriate drivers for it.
You can download the latest version from here: http://code.google.com/p/byte-unixbench/downloads/