Table of Contents


iohammer - Random I/O testing utility


iohammer [-a|-r] [-iuv] [-b blocksize] [-c count] [-f file] [-s size] [-t threads] [-w write%]


iohammer does what it says - very similar to a tool named `rawio' floating out on the 'net. Using multiple threads (either pthreads or multiple processes) iohammer will issue random I/Os, with a percentage based write ratio to a file or raw device. Good for comparing different disk layouts (RAID5, RAID0, RAID1, RAID0+1, RAID3, etc), stripe unit sizes, and general disk random I/O performance. Very good to see the difference the queue_depth parameter makes under AIX!

At the end of an error free run, iohammer writes a summary to standard output, containing statistics from the run.


Instructs iohammer to generate blocks of a repeating ASCII sequence, from octal 040 (` ', space), through octal 176 (`~', tilde). The sequence repeats, without newlines. This the default mode of operation.
-b blocksize
Writes blocks of size blocksize. If not specified, a blocksize of `1s', 512 bytes, is used.
-c count
Writes count blocks, or until error if count is zero and -i is not specified. Defaults to 0.
-f file
Specifies the file, directory or device to open. Only devices that support lseek(2) are supported. If a file is given, the size is determined from the LEOF of the file. If a directory is given, a temporary file with a generated name is created within that directory. If a raw device is given, some (minimal) effort is made to determine the size of the object.
Ignore all I/O errors and continue execution. By default, execution halts on error.
Instructs iohammer to generate a pseudo-random sequence, based on an inlined copy of rand(3).
-s size
If a size cannot be determined, use the given size, in bytes, with optional suffix. Defaults to `1m', 1048576 bytes.
-t threads
Specifies the number of I/O threads to use. Defaults to 8.
Unformatted output. Generate a numeric, tab separated summary line suitable for parsing by scripts.
Verbose: regularly prints a status line showing current progress.
-w write%
Specifies the approximate ratio of reads to writes. If `0', the default, is given the file/device is opened read-only, and only random reads are performed.

All numeric arguments may take an optional letter suffix, similar to the strsuftollx(3) function introduced in NetBSD.

sector; multiply by 512.
kibibytes; multiply by 1024 or 2^10.
mebibytes; multiply by 1048576 or 2^20.
gibibytes; multiply by 2^30.
tebibytes; multiply by 2^40.
pebibytes; multiply by 2^50.
exbibytes; multiply by 2^60.

Exit Status

iohammer exits 0 on success, and >0 if an error occurred.


Testing random read performance on a raw partition:

sh$ iohammer -f /dev/rvnd0d -c 10k
Size 1073741824: 121.097 secs, 10240 IOs, 0 writes
84.6 IOs/sec, 11.83 ms average seek

See Also

fblckgen(1), mbdd(1)


Prolonged running on a disk drive may cause the disk drive to fail.

Running on SAN LUNs in shared storage infrastructure configurations can impact performance of other systems using that shared infrastructure.


Size detection needs work, as it seems there is no standard, reliable method for determining the length of a raw device.


iohammer and the rest of the iotools were developed by Paul Ripke, <>. See <> for the current version.

Table of Contents