How to Use ‘Bonnie++’ to Measure the Speed of Data Reads/Writes on Storage Devices in Linux

How to Use Bonnie Utility for Storage I_O Performance Tests

When managing a Linux server, it’s crucial to understand the performance of your storage devices. One of the most reliable tools for this purpose is Bonnie++, a benchmark suite that tests hard drives and file systems. Bonnie++ measures the speed of data reads/writes, helping administrators identify potential bottlenecks or verify the efficiency of their storage solutions.

In this guide, we’ll walk you through the process of installing and using Bonnie++ to conduct storage I/O performance tests on a Linux machine.

Whether you’re using a dedicated server, VPS server, or even cloud hosting, understanding your storage performance is essential.

Let’s get started.

1. Installing Bonnie++

Before you can use Bonnie++, you need to install it:

Update your package lists:

sudo apt update

Install Bonnie++:

sudo apt install bonnie++

2. Running a Basic Bonnie++ Test

Once installed, you can run a basic test:

sudo bonnie++

This command will run Bonnie++ with default settings, testing the directory from which the command is run. Ensure you have enough free space in the directory, as Bonnie++ will create test files.

3. Customizing Your Test

Bonnie++ offers various options to customize your test:

  • -d DIRECTORY: Specifies the directory where Bonnie++ will run the test.
  • -s SIZE: Sets the size of the test file. By default, Bonnie++ uses twice the amount of RAM in your system.
  • -u USER: Run the test as a specified user.


sudo bonnie++ -d /tmp -s 4G -u root

4. Interpreting the Results

Bonnie++ provides a detailed output, including:

  • Sequential Output: Measures the speed of writing data sequentially.
  • Sequential Input: Measures the speed of reading data sequentially.
  • Random Seeks: Measures the number of random seeks per second.
Version  1.98       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
linux-server    4G   512  99  55678  85  21876  64  1024  98  110234  76  345.6  33
------Sequential Create------ --------Random Create--------
              -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
  16:100000:16  15000  83 +++++ +++ 16000  91 18000  88 +++++ +++ 17000  89

Here’s a brief explanation of the output:

  • Version: The version of Bonnie++ used.
  • Sequential Output: This section measures the speed of writing data sequentially.
    • Per Chr: Speed of writing per character.
    • Block: Speed of block writes.
    • Rewrite: Speed of rewriting data.
  • Sequential Input: This section measures the speed of reading data sequentially.
    • Per Chr: Speed of reading per character.
    • Block: Speed of block reads.
  • Random: Measures the number of random seeks per second.
  • Sequential Create: Measures the speed of creating files sequentially.
  • Random Create: Measures the speed of creating files randomly.
See also  How to Use PGBENCH to Test Database Performance on a Linux Machine

The numbers in the output represent the performance metrics for each test. For instance, in the “Sequential Output” section, “Per Chr” has a speed of 512 K/sec with 99% CPU usage. Similarly, other metrics provide insights into the storage device’s performance.

5. Best Practices

  1. Always run Bonnie++ tests during off-peak hours to avoid affecting server performance.
  2. For accurate results, run the test multiple times and average the results.
  3. Ensure other processes aren’t heavily using the disk during the test.

6. Optimizing Storage Performance

After running Bonnie++ and interpreting the results, you might wonder how to improve your storage performance. Here are some steps you can take:

  • Upgrade Your Hardware: If you’re using traditional HDDs, consider switching to SSDs. SSDs offer faster read/write speeds and can significantly boost your server’s performance.
  • File System Choices: Different file systems have varied performance characteristics. For instance, while ext4 is widely used and offers good all-around performance, XFS might be more suitable for specific workloads involving large files.
  • Tune Mount Options: Depending on your workload, adjusting mount options can enhance performance. For instance, using the ‘noatime’ option can reduce disk writes on read-heavy servers.
  • Regular Maintenance: Regularly defragmenting your file system, especially if it’s an HDD, can help in maintaining optimal performance. Tools like e4defrag for ext4 file systems can be beneficial.
  • Monitor Disk Health: Tools like smartmontools can help monitor the health of your storage devices, allowing you to replace them before they fail or become too slow.
See also  How to Test a Web Server's Page Load Times in Linux

7. Beyond Bonnie++: Other Benchmarking Tools

While Bonnie++ is an excellent tool for storage benchmarking, there are other tools available that can provide additional insights:

  • hdparm: Useful for testing the read speed of a disk.
  • ioping: Measures disk I/O latency in a similar way to how ping measures network latency.
  • fio: A versatile I/O tester that can simulate various workloads.

Each tool has its strengths, and using a combination can give a comprehensive view of your storage performance.

8. Considerations for Different Hosting Types

The type of hosting you use can influence the results:

  • Dedicated Servers: You have full control over the hardware, so any optimizations or upgrades will directly benefit your applications.
  • VPS: You share resources with other users. Ensure your VPS provider uses fast storage solutions and isn’t overselling resources.
  • Cloud Hosting: Performance can be more consistent, but it’s essential to choose the right storage tier or type offered by the cloud provider.

Commands Mentioned

  • sudo apt update – Updates the package lists for upgrades and new packages.
  • sudo apt install bonnie++ – Installs Bonnie++.
  • sudo bonnie++ – Runs a basic Bonnie++ test.
  • sudo bonnie++ -d /tmp -s 4G -u root – Runs a customized Bonnie++ test.
See also  How to Use ‘fio’ to Measure the Speed of Data Reads/Writes on Storage Devices in Linux


  1. What is Bonnie++ used for?

    Bonnie++ is a benchmarking suite used to test hard drives and file systems in Linux. It measures the speed of data reads/writes, helping administrators understand storage performance.

  2. How do I install Bonnie++ on my Linux server?

    You can install Bonnie++ using the package manager of your Linux distribution. For Debian-based systems, use ‘sudo apt update’ followed by ‘sudo apt install bonnie++’.

  3. How do I run a Bonnie++ test?

    To run a basic test, use the command ‘sudo bonnie++’. You can also customize the test using various options like ‘-d’ for directory, ‘-s’ for size, and ‘-u’ for user.

  4. What should I consider when interpreting Bonnie++ results?

    Consider metrics like Sequential Output, Sequential Input, and Random Seeks. Also, run the test multiple times for accuracy and ensure no other processes are heavily using the disk during the test.

  5. Is Bonnie++ suitable for all types of hosting?

    Yes, Bonnie++ can be used on various hosting types, including dedicated servers, VPS, cloud hosting, and shared hosting. However, always ensure you run tests during off-peak hours on production servers.


Storage performance is a critical aspect of server management. Tools like Bonnie++ provide invaluable insights into how well your storage devices are performing.

By regularly benchmarking and taking proactive steps based on the results, you can ensure that your server remains efficient, responsive, and ready to handle the demands of your applications and users.

Whether you’re on a dedicated server, VPS, or cloud hosting setup, understanding and optimizing your storage performance is key to a smooth and efficient online experience.


Leave a Reply

Your email address will not be published. Required fields are marked *