I know that I can use fio
to benchmark my disks with any given static workload. However, does any open source high quality benchmarking tool support doing a test where I select following parameters as constants:
- Test file size (e.g. 500 MB)
- Static QD (settable at least to 1, 2, 4 and 8)
- Workload (e.g. random 4k read over whole file span)
- Direct I/O access (similar to
libaio
offio
) - Define max latency in µs
And the benchmark should slowly increase IOPS until latency goes over set limit after which the benchmark is done. The test result would be latency for each IOPS value, or better yet, minimum+average+max latency for each IOPS value.
Basically I'm asking a tool that can do similar benchmarking required for this storagereview.com graph:
I know that I can repeatedly run fio
with different settings to generate the required data but I'm wondering if there's some premade tool for this purpose. Does such a benchmark tool exists?
fio
has an option that discovers the highest IOPS that can be done under a certain latency... From the "I/O latency" section of the fio documentation:Please see the whole I/O latency section of the fio help as there are a bunch of operations that interact together. You may also find fio's Steady State mode and the separate tool Diskplorer (which itself drives
fio
) useful. However, I note you've clarified your question and the aforementioned options/tools don't generate latency numbers at a set number of different "max IOPS" points (however Diskplorer does generate latency / IOPS against I/O depth numbers).Away from
fio
, you could also look at using thevdbench
tool that StorageReview themselves actually seem to be using in that review (despite their page claiming that they use fio) but you'll have to wave goodbye to alibaio
like submission - I'm fairly surevdbench
doesn't do platform specific AIO because it is trying to be platform agnostic (so it can only use multiple threads/processes to up the depth).Here's a bash script I cooked up (fio-ramp hosted at github):
Example graph (Latency vs IOPS on Intel SSD 910, random 4K read QD32, log-log graph):
Compared to Diskplorer this runs a new
fio
process for each IOPS target and collects minimum, average and maximum latency. I know bash better than python so this was easier for me to write. In long run improving Diskplorer could be better in case its license is acceptable (currently no license has been defined for that project).