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.
- -a
- 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.
- -i
- Ignore all I/O errors
and continue execution. By default, execution halts on error.
- -r
- 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.
- -u
- Unformatted output. Generate
a numeric, tab separated summary line suitable for parsing by scripts.
- -v
- 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.
- s
- sector; multiply by 512.
- k
- kibibytes; multiply by 1024 or 2^10.
- m
- mebibytes; multiply by 1048576 or
2^20.
- g
- gibibytes; multiply by 2^30.
- t
- tebibytes; multiply by 2^40.
- p
- pebibytes;
multiply by 2^50.
- e
- exbibytes; multiply by 2^60.
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
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, <stixpjr@gmail.com>.
See <http://stix.id.au/wiki/iotools> for the current version.
Table of Contents