ezFIO – Powerful, Simple NVMe SSD Benchmark Tool


Article by Earle F. Philhower III, Western Digital Senior Manager, SSD Technical Marketing

Organizations’ users are adopting NVM Express attached enterprise SSD (eSSD) products at phenomenal rates. Increasing data volume and velocity require hundreds of thousands of IOPS and the gigabytes per second of bandwidth these new devices can provide. Today’s applications have higher parallelism and sustained performance needs, coupled with a need for predictable, consistent performance even when a device has been fully written and overwritten.

There are many benchmarks for peak metrics like IOPS and throughput. However, few address the non-stop nature of enterprise storage needs. So customers are left to develop their own methods. But writing a repeatable, meaningful benchmark is hard. Even more difficult is the task of presenting meaningful results in a spreadsheet or graph without the nightmare of manual cut-and-paste efforts.

That’s where ezFIO comes in: https://github.com/earlephilhower/ezfio . ezFIO is a Linux and Windows wrapper for the cross-platform FIO IO testing tool. It always includes a repeatable preconditioning (also known as “seasoning”) stage, to help simulate the true long-term performance of eSSDs. A wide variation in IO sizes and parallelism is run automatically.

ezFIO also includes long-term performance stability measures, which allow for latency outliers and deviations to be numerically represented and graphically identified quickly. These new SSD metrics show Quality of Service, both at a Macro level (standard deviation over time) and Micro Level (measurement of minimum and maximum latency outliers). And, finally, ezFIO takes all these results and produces an Open Document formatted spreadsheet usable under Linux or Windows with embedded graphs and raw test results to make examining these results consistently derived and for any NVMe device to be compared.


 Figure 1 — Select Drive Under FIO

To run ezFIO under Windows, simply install FIO and run a PowerShell script. Then select a drive, hit OK, and come back in several hours to an ODT formatted spreadsheet. ezFIO takes care of preconditioning the drive, running repeatable tests, and plotting the results. There is also a command-line option to allow for scripted runs against multiple devices in sequence, without user intervention. The Linux version is written in Python and implements the exact same sequence of preconditioning and tests, taking its drive under test from a command line parameter.


   Figure 2 – Real-Time Status

While tests are running, intermediate results are shown (full test results are always stored in a new test directory). These results appear in a GUI dialog under Windows, and the terminal under Linux.

Finally, when the tests are completed, all the individual runs are collated into a single spreadsheet in the ODT format (accessible under Microsoft Excel, Open Office, Libre Office, or others):


Average IOPS: 293,821

Standard Deviation: 8,363.7 IOPS

Coefficient of Variation: 3%

Figure 3 — Macro QoS (Stability Over Time)


Figure 4 – Pre-generated Graphs for Immediate Export

A full user’s guide is available in the package, and since the software is completely open sourced and written in scripting languages (PowerShell for Windows, Python for Linux), it’s easily modifiable for power users without needing a complete development toolchain.

ezFIO represents the next-level of performance benchmarking for NVMe, taking into consideration many critical parameters that will yield the best possible results for most use cases.

Give ezFIO a try at https://github.com/earlephilhower/ezfio.