Bonnie tests the speed of sequential file I/O using standard C library
calls.  It does reads and writes of characters using STDIO; and of
blocks using system calls.  Then it does a sequential pass of reading
every block, modifying one byte, and writing it back; and finally it
does random seeks followed by reads and writes of blocks.  It reports
the average sustained data rate (usually limited by the drive or
controller).  It is quite dependent on hardware and OS optimisations.

The per character read and write tests are generally limited by CPU
speed except on the fastest of systems.  It takes some 35 SPECint92 to
read or write a file at a rate of 1MB/s using getc() and putc().

The input tests, particularly the block reads, are highly dependent on
the buffer cache size.  A file size of at least four times available RAM
is needed to effectivley mask the effects of the buffer cache.

The seek tests are also dependent on the buffer cache size, since the
fraction of disk blocks which fit into the buffer cache will be found
without any actual disk access and will contribute little or no apparent
seek time to the mesurements.  I.e. if the buffer cache is 16MB and the
Bonnie test file is 32MB in size, then the seek time will come out as
about half its real value.  The seek time includes rotational delay, and
will thus always come out higher than the specified value for a drive.

Homepage:
https://www.textuality.com/bonnie/index.html
