You’ve unboxed that new hard-disk drive, flash solid-state drive or other storage system, and now you want to see how it will perform. The best benchmark for expected response rates uses tests that rely on your own applications, but there are additional tools you can use to capture a few general-purpose insights. Let’s look at how to test your server and storage I/O configuration in four straightforward steps.
Step 1. Plan What and How You Are Going To Test
Include how the storage will be configured (raw, mounted with file system, cached, noncached) and what system you will be using. Also, decide what type of workload test to perform (reads, writes, I/O size, random, sequential, response time, server CPU loading, buffered cached or noncached).
Write tests can be destructive, so make sure to protect data on devices being evaluated. Plan for how you will record configuration details, and test run output data files, making sure you have enough disk space for data event logs.
Step 2. Decide On an HDD or SSD Benchmarking Tool
Consider your workload configuration, test duration and the devices to benchmark. There are many free tools for this task, including Benchmark Factory, fio, HammerDB, Iometer, IOzone, Login VSI, SQLIO and Vdbench, among others.
Some Unix-like systems include a benchmark utility — hdparm and dd, for example — as part of their disk configuration tools. Check out the dd command help for some of that utility’s capabilities.
Step 3. Test the Performance Test
Before you run your actual test, do some practice runs to verify that you’ve configured the tool properly and so that you can create metrics that line up with your requirements.
Even after you start running your actual test, it’s a good idea to monitor it for the first few minutes to make sure everything is measuring as expected.
Step 4. Focus on Metrics that Matter to Your Business
The three most important things to measure are IOPS (input/output operations per second, which is an activity rate), I/O size (the bytes to transfer per IO) and bandwidth (the throughput, or data that’s moved in a given time).
Your specific priorities will depend on what you are working on. If you are building a transactional database, then solid IOPS will be important, whereas a video storage system will need good throughput performance.
The good news is, if you know any two of these metrics, you can easily derive the third. For example, IOPS equals the number of I/Os (reads/writes) within a certain time interval, while bandwidth is the number of I/Os multiplied by I/O size. Other metrics that matter include response time or latency (how quickly the work is done), queues (work waiting to be done) and server system CPU (how much overhead or available resources are needed to support I/O).