This version starts the re-write of Bonnie++! I will make it totally threaded (the new code does not use fork()). It will also support testing with a specified number of threads doing the same test, this will allow you to really thrash those RAID arrays!

  • bonnie++-2.00a.tgz – fixed a column assignment issue in bon_csv2html and called it 2.00a because 1.9x hasn’t changed much for years and because I stuffed up the first release of 2.00.
  • bonnie++-1.98.tgz – Allow specifying the number of random seeks and the number of seeker processes and store that in the CSV (for testing NVMe). Changed the text output to use KiB/MiB/GiB as units of measurement so we can fit NVMe results on screen.
  • bonnie++-1.97.3.tgz – man page fixes, fixed symlink test, and CSS fix for bon_csv2html.
  • bonnie++-1.97.2.tgz – make it build with GCC-6 and fix some Debian bugs.
  • bonnie++-1.97.tgz – fixed a bunch of bugs including bad CSV output.
  • bonnie++-1.96.tgz – fixed a bunch of bugs and got the colors working correctly in the HTML output.
  • bonnie++-1.95.tgz – support direct IO and made some changes to the build process (including dropping NT and OS/2 support).
  • bonnie++-1.94.tgz – major improvements to zcav.
  • bonnie++-1.93d.tgz – added write support to ZCAV.
  • bonnie++-1.93c.tgz – added support for GCC 3.2.
  • bonnie++-1.93b.tgz – version 1.93b. Fixed an error in calculating seek time and added support for large numbers of directories for the file creation tests.
  • bonnie++-1.93a.tgz – version 1.93a. Better support of NT, better RPM packaging code, and a minor warning fix.
  • bonnie++-1.93.tgz – version 1.93. Added a new test program for per-char IO for the people on the linux-kernel mailing list. ;)
  • bonnie++1.92b.tgz – version 1.92b. Fixed a bunch of bugs in the random seed selection code.
  • bonnie++1.92a.tgz – version 1.92a. Added support for setting the seed for random numbers and fixed a few bugs.
  • bonnie++1.92.tgz – version 1.92. Changed the code to do per-char tests with read() and write() instead. Now reports much lower results for those tests which are more useful IMHO.
  • bonnie++1.91c.tgz – version 1.91c, it now compiles with namespace support in GCC 3.0 and fixed some minor bugs.
  • bonnie++1.91b.tgz – version 1.91b
  • bonnie++1.91a.tgz – version 1.91a, fixed zcav properly and fixed a bunch of minor bugs in Bonnie++.
  • bonnie++1.91.tgz – version 1.91, fixes all known bugs in the 1.90 series.
  • bonnie++1.90g.tgz – version 1.90g, now latency works properly and always gets parsed properly. Changed the -f option to allow tests of per-char IO for small amounts of data.
  • bonnie++1.90f.tgz – version 1.90f, more work on latency in bonnie++ and some slight changes for OS/2 and NT portability.
  • bonnie++1.90e.tgz – version 1.90e, better OS/2 and NT support.
  • bonnie++1.90d.tgz – version 1.90d, contains code from the OS/2 and NT ports, may break things for some versions of UNIX.
  • bonnie++1.90c.tgz – version 1.90c, produces better web pages (full color) with bon_csv2html.
  • bonnie++1.90b.tgz – version 1.90b, adds support for measuring latency.
  • bonnie++1.90a.tgz – version 1.90a, adds basic threading, changes the format of the CSV files, and updates the programs for managing CSV files (and the man pages).

10 comments to Bonnie++

  • Stephane VIUSA

    Hello Russel,

    I’m using bonnie to compare two kind of storage today (ceph and nfs) and I’m a bit confuse with the result and try do understand what is metered on latency.
    is latency taken from start/end of transaction, I/O?



  • Latency is the worse of all times taken for an operation.

  • Attilio Signorini

    “Latency is the worse of all times taken for an operation.”

    That explain my concerns :) It would be really cool to have the average too

    BTW: we have compiled it for AIX, I will send you some details of what we did it to make it works

  • Thomas Preston

    Hi Russel,
    We’re using Bonnie++ to test I/O for a client. Do you track it with version control anywhere? We’d like to help out tidying it up. We’d usually suggest GitLab or GitHub.


  • Edwin B Olson

    I believe there’s a stray colon in bonnie.cpp in the getopt string that causes -f args to fail.

    while(-1 != (int_c = getopt(argc, argv, “bc:d:f::g:l:m:n:p:qr:s:u:x:y:z:Z:”

    should be (note after the letter ‘f’)

    while(-1 != (int_c = getopt(argc, argv, “bc:d:f:g:l:m:n:p:qr:s:u:x:y:z:Z:”

  • Michael

    Hi Russell,
    Is there somewhere to report bugs in Bonnie++?
    There’s a bad one with the /sec output in file create test.

  • Borja


    I have updated bonnie++ to 1.98 (running on FreeBSD) and I have noticed something odd.

    Version 1.98 ——Sequential Create—— ——–Random Create——–
    micro1 -Create– –Read— -Delete– -Create– –Read— -Delete–
    files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
    16 22767.979448 84 +++++ +++ 31118.948802 98 +++++ +++ +++++ +++ +++++ +++
    Latency 98472us 211us 245us 2040us 216us 247us

    The lower case “m” is a prefix for “milli”, that is, 10^-6. The correct prefixes for “kilo”, “mega” and “giga” are upper case letters. K, M, and G. I would suggest a simple change.

  • Geoff Gibbs

    I just looked at version 1.98 and the CSV output does not match the man page(s). Can you tell me what the differences are, or just let me know what each value is?



  • I have a huge list of (still) interesting results from 1.97. How can they be compared to newer results from 1.98?

  • Scott S.

    Hey Russell,

    “Do you track it with version control anywhere? We’d like to help out tidying it up. We’d usually suggest GitLab or GitHub.” – my thoughts too, please let me know.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>




This site uses Akismet to reduce spam. Learn how your comment data is processed.