February 02, 2007

In the article lighty 1.5.0 and linux-aio we proposed a benchmark suite for measuring the performance for a disk-io-bound application.


As load-generator we use http_load as it

  • allows random fetches from a list of URLs
  • allows a large number of parallel requests
  • is portable

On the command-line we want to execute it like:

$ ./http_load -verbose -parallel 100 -fetches 10000 urls

file pool

On the machine which supposed to be tested we generate 2 sets of 10Gbyte files. One is of 100,000 files of 100kbyte size, and the other is 1.000 files of 10MByte size.

$ cd $docroot
$ mkdir -p seek-bound/100k/
$ cd seek-bound/100k/
$ for i in `seq 1 1000`; do
  mkdir -p files-$i;
  for j in `seq 1 100`; do
    dd if=/dev/zero of=files-$i/$j bs=100k count=1 2> /dev/null;

The file-pool is 10 times larger than the available RAM on the server-host. Based on this disk layout we generate the list of URLs for http_load.

$ find ./seek-bound/100k/ | grep 'files.*/.' | sed 's#\./#' > http-load.100k.urls

The same commands are executed for the 10MByte files to generate a file-set which check the performance for large files.


The test-network is made up of:

  • Netgear GS108, a 8-port Gigabit Switch
  • client:
    • OS: WinXP Prof. 64-bit
    • CPU: AMD64 X2 (dual core) 4200+
    • Network: Intel Pro/1000
  • server:
    • OS: Linux x86_64 (OpenSuse 10.1)
    • CPU: AMD64 3000+
    • Network: Intel Pro/1000
    • Modules: stock, but ip_conntrack is rmmod‘ed
    • Disks: 2 SATA disks as RAID1 via the md-driver

The disks are:

Model Number:       ST3160827AS
Serial Number:      5MT02VGJ and 3MT08WDV
Firmware Revision:  3.42
$ cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sda2[0] sdb2[1]
           155235968 blocks [2/2] [UU]