Copyright 1991, 1992, 1994 William D. Norcott
License to freely use and distribute this software is hereby granted
by the author, subject to the condition that this copyright notice
remains intact. The author retains the exclusive right to publish
derivative works based on this work, including, but not limited to,
revised versions of this work
This test writes a X MEGABYTE sequential file in Y byte chunks, then
rewinds it and reads it back. [The size of the file should be
big enough to factor out the effect of any disk cache.]. Finally,
IOZONE deletes the temporary file
The file is written (filling any cache buffers), and then read. If the
cache is >= X MB, then most if not all the reads will be satisfied from
the cache. However, if it is less than or equal to .5X MB, then NONE of
the reads will be satisfied from the cache. This is becase after the
file is written, a .5X MB cache will contain the upper .5 MB of the test
file, but we will start reading from the beginning of the file (data
which is no longer in the cache)
In order for this to be a fair test, the length of the test file must
be AT LEAST 2X the amount of disk cache memory for your system. If
not, you are really testing the speed at which your CPU can read blocks
out of the cache (not a fair test)
IOZONE does not normally test the raw I/O speed of your disk or system.
It tests the speed of sequential I/O to actual files. Therefore, this
measurement factors in the efficiency of you machines file system,
operating system, C compiler, and C runtime library. It produces a
measurement which is the number of bytes per second that your system
can read or write to a file.
You use IOZONE to test the I/O speed of a UNIX RAW DEVICE such
as a tape drive, hard disk drive, floppy disk drive, etc. To do this,
you must define the symbol NO_DELETE when you compile IOZONE. If you
fail to define NO_DELETE, IOZONE will treat the raw device as a
temporary file, and WILL DELETE THE RAW DEVICE after the test completes!
When testing raw devices, any UNIX buffer caching is bypassed. IOZONE
still is using the read()/write() system calls, so you are not quite
testing the device at the low level of say, disk controller diagnostics.
On the other hand, that kind of testing is highly system- and device-
specific, and my goal for IOZONE has been to build a highly portable
benchmark -- not one which is tied to a particular operating system or
hardware configuration. In practice, I have tested raw disk and tape
peripherals and the results are very close to the manufacturers specs
for those devices.