Jul 20, 2023

General purpose storage I/O benchmarking tool

Iorate is a general purpose storage I/O benchmarking tool.

Iorate was created in 1997 by Vince Westin of EMC while working with Cliff Burrell of FedEx to fill a need to perform a set of storage I/O benchmarks. Though Iorate was developed by EMC staff with EMC resources there are no EMC-specific pieces to the testing, it just tests storage.

In the realm of performance troubleshooting and benchmarking, tools that can measure the performance and throughput of a system are vital. In FreeBSD, one such utility falls under the “benchmarks” category of the ports collection—the IOrate FreeBSD port. As a disk I/O benchmarking utility, IOrate shines with both its simplicity and flexibility, making it indispensable for FreeBSD users who wish to monitor their system’s I/O capabilities under varying workloads.

Introducing IOrate

The IOrate port on FreeBSD is designed to provide a robust framework for comparing and contrasting the performance of different storage systems. This utility is particularly versatile, working effectively with not just local disk drives but also with networked systems like Network File System NFS and Common Internet File System CIFS. This makes IOrate a valuable tool for individuals looking to benchmark their storage system or troubleshoot performance issues related to disk I/O.

Installing IOrate on FreeBSD

Installing IOrate on a FreeBSD system is a straightforward process, thanks to the ports collection. Unless already done, first update your ports tree with the following command

# portsnap fetch update

After ensuring that the ports tree is up-to-date, navigate to the location of the IOrate port.

# cd /usr/ports/benchmarks/iorate/

To install, run the following command

# make install clean

Upon completion, you’ll find the IOrate tool ready for use.

Using IOrate for Disk Benchmarking

IOrate uses various workloads to simulate the demands placed on a disk I/O subsystem during different types of operations. By default, the iorate command will create a workload file in the current directory. To specify a different location or multiple locations, provide them as arguments to the command. For instance, to benchmark the disk I/O of two different directories, use

# iorate /path/to/directory1 /path/to/directory2

IOrate displays comprehensive real-time stats as it runs, including read/write operations per second, kilobytes read/written per second, average response time, max response time, and percentage of CPU usage. This level of sophisticated output makes IOrate a prime choice for benchmarking disk I/O.

Advanced Usage

One of IOrate’s strengths is its robust range of options that let you tailor it to your specific use case. Notable among these options, the -i parameter allows you to set the intensity of the load on the disk I/O subsystem

# iorate -i 100 /path/to/directory1

The -f option lets you specify specific workload files

# iorate -f workloadfile /path/to/directory1

Complementing IOrate with other FreeBSD Ports

While IOrate is an excellent tool for disk I/O benchmarking, other FreeBSD ports can aid in fully profiling a FreeBSD system’s performance. For network profiling, consider tools like nmap [nmap]https// that help qualify and quantify network security and performance. For CPU benchmarking, ports like sysbench can offer valuable insights. The robust FreeBSD ports collection affords users with a wide range of utilities for assessing and addressing system performance.

Final Thoughts

IOrate on FreeBSD provides a powerful and versatile tool for disk I/O benchmarking. Its lightweight yet extensive functionality allows for detailed profiling of storage systems, whether local or networked. Coupled with the wider suite of benchmarking tools available in the FreeBSD ports collection, FreeBSD users are well-armed to analyze and optimize their systems with precision. Whether you’re a FreeBSD novice or a seasoned system administrator, understanding and utilizing tools like IOrate can vastly improve your FreeBSD experience.

Checkout these related ports:
  • Wrk - Modern HTTP benchmarking tool
  • Webbench - Simple forking web benchmark
  • Vkpeak - Profile Vulkan devices to find their peak capacities
  • Vkoverhead - Evaluate CPU overhead of Vulkan drivers
  • Vkmark - Vulkan benchmark
  • Vegeta - HTTP load testing tool and library
  • Uperf - Network performance tool to model and replay of networking patterns
  • Unixbench - BYTE magazine's Public Domain benchmark for UNIX
  • Uica - Code Analyzer from the project
  • Ubench - Unix Benchmark Utility for CPU(s) and memory
  • Typometer - Text/code editor typing latency analyzer
  • Ttcp - Benchmarking tool for analysing TCP and UDP performance
  • Tsung - Multi-protocol distributed load testing tool
  • Thrulay - Network capacity tester
  • Tcpblast - Measures the throughput of a TCP connection