I originally started work on this project to support more than 2G of storage
for the database tests. At the time I was testing hard drive performance of
some Sun servers with 8G of RAM, so a 2G test file (the maximum size for 32bit
code) wasn't enough to get valid results. To do this I wrote a C++ class to
encapsulate the file IO and support storage in a number of 1G files with all
access being through an index to the 8K block used (giving a potential for
storage of 2^44 bytes of data - 16T).
Then I started playing with the Reiser file system and found that Bonnie didn't
run any faster on ReiserFS than on any other file system. So I decided that it
needed to test the creation of large numbers of files in a directory to be
able to show how file systems such as ReiserFS outperform older file systems
such as Ext2 and UFS.
After it became apparent that Tim Bray and I will probably never agree on
the relative merits of C vs C++ Tim suggested that I release my code
independantly under the name Bonnie++.
After I started releasing test versions which then started to become popular I
began added some features based on code contributions (such as synchronization
of multiple bonnie++ processes) and on request (blocking mode).