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.