• No results found

3.4 Benchmarks used

3.4.1 CPU intensive benchmarks

Two CPU-intensive benchmarks have been used in the experiments. They are the

Nbenchand Unixbench. The benchmarks are described next.

3.4.1.1 Nbench

The Nbench [219] is a CPU benchmark suite consisting of various types of benchmarks to test all the vital functions of a processing unit. It was initially introduced in mid- 1990’s by researchers of once popular the BYTE magazine. Subsequently, it has been updated several times to make it more compatible with modern CPUs. The benchmark suite is written in C and was initially intended for Windows machines. However, later Linux compliant versions were introduced; hence the benchmark is portable between systems.

The benchmark suite uses a comprehensive set of real-world algorithms to make the tests as realistic as possible. These tests are called, Numeric sort, String sort,

Resource intensity Benchmark

CPU Nbench Unixbench Memory Cachebench STREAM I/O Dbench Filebench IOzone Other LMbench Sysbench

3.4. BENCHMARKS USED 57

Bitfield, Emulated floating-point, Fourier coefficients, Assignment algorithm, Huffman

compression, IDEA encryption, Neural Net and LU Decomposition.

In the numeric sort test, several arrays of 32-bit integers are sorted to test the integer handling capability of the system. In the string sort test, several arrays of strings of arbitrary lengths are sorted. A variety of bit manipulation functions is executed in the bit-field test. A small software package is used to stress the floating-point unit of the system in the emulated floating-point test. In the Fourier coefficients test, numerical analysis is done to calculate a series approximation of a waveform.

Next test, the assignment problem is one of the fundamental combinatorial opti- mization problems in the operational research. Here, the objective is to find a maxi- mum matching for a weighted bipartite graph. The Huffman compression test uses the Huffman algorithm to test the performance of a system for compressing both text and graphics.

Next, the IDEA encryption test is for evaluating the efficiency of a system using the IDEA algorithm to cipher and then decipher blocks of data. The neural net test consists of a small self-sufficient back-propagation network simulator to perform tests. The last test is the LU Decomposition it is for testing the performance of the system for solving a set of linear equations. Thus, the Nbench benchmarks consist of a comprehensive set of test for a VM.

3.4.1.2 Unixbench

The Unixbench [220] performs multiple tests on the system. The resource usage pat- terns of various tests of the Unixbench are designed to resemble that of commonly used commercial applications. The Unixbench has been used to analyze the performance of VMs in previous works [221]. The tests that are included in Unixbench are described next.

The Dhrystone [222] and Whetstone [223] are two well-known synthetic bench- marks that are part of the Unixbench suite and used for measuring the CPU perfor- mance. Synthetic benchmarks are carefully designed programs based on statistical analysis of various parts of widely used applications. The objective here is to mimic the operations of certain parts of real-world applications that are responsible for most of the resource consumption by the application. It is motivated by the fact that during execution applications usually spend the most time on certain parts of the code, and

3.4. BENCHMARKS USED 58

these parts have huge influences on the overall performance of the application.

The Whetstone measures the speed and efficiency of some floating point operations that are common in scientific applications. It employs a wide variety of C library functions like sin, cos, sqrt, exp, and log along with other system related functions like conditional branches and procedure calls. On the other hand, the Dhrystone focuses on integer and array access efficiency of the system. Design of these tests is influenced by the design techniques of software such as the compiler, code optimization, and wait-states.

Next, the execl throughput test measures the execl call execution efficiency of the system. The execl() is an essential function that replaces the currently executing pro- cess with a new one. It is an essential member of the exec family of functions. Next, the file copy test is for testing how fast chunks of data can be copied. For this purpose read, write and copy operations are performed on buffers of different sizes. Next, in the

pipe throughput test, a process is repeatedly used to write and read on 512 kb buffers as many times as possible over the pipe, which is a simple mechanism for interprocess communication. Next, in the pipe-based context switching test two processes inter- change an integer through a bi-directional pipe, and size of the integer is increased in each successive step.

The process creation test measures how many times a process can fork and reap child processes. Creating and reaping child processes is a standard feature of applica- tions. Next, in the test called shell scripts, it is tested how many copies of a shell script the system can run concurrently and how quickly. Next, in the system call overhead test, the getpid() system call is repeatedly issued by a simple program. Each system call causes the operating system to enter into kernel mode and subsequently depart, purpose of the test is to check how fast the system can enter into and exit from kernel mode. Besides these, the Unixbench also performs both 2D and 3D graphical tests for the graphics driver of the system.