DLSITT0240 | File System Benchmarks

General requirements

The clients for this performance benchmark must be configured according to the setup section on this website.

Separate directories per test client should be created in /testfs using continuous two digit numbers. The first client would use the directory /testfs/01, the second clients /testfs/02 and so on.

Throughput Benchmarks

General information

All throughput benchmarks are to be performed using iozone in version 3.283 (as reported by 'iozone -v') installed on all clients. Iozone can be found at http://www.iozone.org, a copy of version 3.283 compiled for Red Hat Enterprise 4 i386 can be found here: iozone-3-283.i386.rpm.

Requirement specific tests

Requirement 3.1.2.3

Single Client, Single Thread, 1 Gbit client

For a single client, single thread write and read test the following command must be used:

iozone -Mce -s100g -r10m -i0 -i1 -f /testfs/01/iozone.dat >> single_thread_result

(The options mean the following: -e causes flushing operations (fsync, fflush) to be included in the timing; -c causes close() to be included in timing; -M causes the output of 'uname -a' to be included in the output; -s 100g and -r 10m specify the file size and the record size, respectively; -i0 and -i1 select the write/rewrite test, and the read/reread test from the variety of tests that iozone offers.)

This command must be run at three times, each invocation will generate a record in the file single_thread_results. On successful completion of the iozone run, each record will have lines similar to the following:

random  random    bkwd  record  stride     
KB reclen write rewrite read reread read write read rewrite
read fwrite frewrite fread freread
104857600 10240 50124 48572 43751 42401

The third entry in the line of numbers (50124 kB/s in this example) is the write speed in kB/s and the arithmetic average of the three tests should exceed 80000 kB/s. The fifth entry (43751 kB/s in this case) is the read speed in kB/s and the arithmetic average of the three tests should exceed 100000 kB/s.

Single Client, Two Threads, 1 Gbit client.

For a single client, two thread write and read test the following command must be used to run 2 threads on the same client in the same directory:

iozone -Mce -t 2 -s100g -r10m -i0 -i1 -i8 -+p 66 -F /testfs/01/iozone{1,2}.dat >> 
multi_thread_single_client

(The -t option specifies that 2 threads are to be created; the -F option is expecting 2 unique file names (here shown as shell patterns), -C causes iozone to include the bytes transferred by each child in its report and -i8 is the 'mixed' load test where -p specifies that 66% of the IOPS must be "read".).

The aggregate performance of one run for writing and reading, respectively, is the number given in the line 'Parent sees throughput for 2 initial writers = 105808.03 kB/sec', 'Parent sees throughput for 2 readers = 103015.79 kB/sec' and 'Parent sees throughput for 2 mixed workload = 53700.47 kB/sec', respectively. The test is to be run three times; the aggregate performance for reading, writing and mixed mode is the arithmetic average of the aggregate performance of the three runs for reading, writing and mixed mode, respectively. It should exceed exceed 100000 kB/s for both reading and writing.

Requirement 3.1.2.4

Multiple clients, Multiple Threads, 1 Gbit clients

For multiple clients and multiple threads write and read tests all clients must mount the file system. Iozone needs an input file with the hostnames of all clients to be used in the test. The format for the input file is simple, one line per client, three space separated fields. First field is the client name, second field the directory where iozone will create the test data, third field path to the iozone executable on the client. In the sample lines below client names are assumed to be node01 to node60 and iozone is assumed to be installed in /opt/iozone/bin/iozone on all clients. (This is correct, if the rpm above is used to install iozone.) Note that iozone must be able to login to each node without password. Normally iozone uses rsh but a symbolic link from rsh to ssh works as well, if ssh with ssh-key login is used.

node01 /testfs/01 /opt/iozone/bin/iozone 
node02 /testfs/02 /opt/iozone/bin/iozone
node03 /testfs/03 /opt/iozone/bin/iozone
node04 /testfs/04 /opt/iozone/bin/iozone

Save these lines in a file called iozone_hosts in the current directory. The following command would then execute iozone on these four nodes using four threads, one per node:

iozone -+m iozone_hosts -Mce -s 100g -r10m -i0 -i1 -i8 -+p 66 -t4 >> 
multi_threads_multi_clients

The aggregate performance of one run for writing and reading, respectively, is the number given in the line 'Children see throughput for 4 initial writers = 420738.03 kB/sec', 'Children see throughput for 4 readers = 419492.31 kB/sec' and 'Children see throughput for 4 mixed workload = 184192.88 kB/sec', respectively. The test is to be run three times; the aggregate performance for reading, writing and mixed mode is the arithmetic average of the aggregate performance of the three runs for reading, writing and mixed mode, respectively.

Using this method, iozone should be run on as many clients as necessary to provide the required aggregate throughput. The number of clients required and the aggregate throughput must be reported.

Requirement 3.1.2.5

Single Client, Single Thread, 10 Gbit client

The same as the test for requirement 3.1.2.3 (above), except that the client is connected at 10 Gbit/s and the arithmetic average of the sum of reading and writing must exceed 500000 kB/s.

Requirement 3.1.2.7

Metadata Performance

All Metadata Performance benchmarks are to be performed using bonnie++ in version 1.03. Bonnie++ can be optained from http://www.coker.com.au/bonnie++/, a binary for RedHat Enterprise Linux 4 can be found here: bonnie++-1.03-1.b.1.i386.rpm.

The following command line should be used to measure metadata performance:

bonnie++ -s0 -d /testfs/01/ -n1000:0:0:10 -m `hostname -s`  > single_thread_metadata

(The options have the following meaning: -s0 skips the throughput measurements, -d specifies the top level directory for the test -n specifies the number of files (in units of 1024), the minimum file size, maximum file size and number of directories, here 1000 *1024 files, minimum 0kB, maximum 0kB file size and 10 directories, -m specifies the name of the machine for display purposes.)

This command must be run at three times, each invocation will generate a record in the file single_thread_metadata. On successful completion of the bonnie++ run, each record will have lines similar to the following:

Version  1.03       ------Sequential Create------ --------Random Create-------- 
pc029 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
1000/10 17990 62 2654 4 1306 4 16304 56 603 1 105 0
pc029,,,,,,,,,,,,,,1000/10,17990,62,2654,4,1306,4,16304,56,603,1,105,0

In the line below the line starting with the word "files", a line with space separated number should appear. In this line, the second number is the number of sequential file creations per second, the fourth number is the number of sequential file stats per second, the sixth number is the number of sequetional file deletions per second, the eight number is the number of file creations in random order, the tenth number is the number of file stats in random order, and the twelth number is the number of file deletions in random order.

The arithmetical average of the sequential file creations per second should be reported in the tender return. The arithmetical average of all six numbers should be reported on the technical questionnaire.