fio is an I/O tool meant to be used both for benchmark and stress/hardware verification. It has support for 13 different types of I/O engines (sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio, and more), I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs, and much more. It can work on block devices as well as files. fio accepts job descriptions in a simple-to-understand text format. Several example job files are included. fio displays all sorts of I/O performance information. Fio is in wide use in many places, for both benchmarking, QA, and verification purposes. It supports Linux, FreeBSD, NetBSD, OS X, OpenSolaris, AIX, HP-UX, and Windows.
| Tags | Benchmark Filesystems |
|---|---|
| Licenses | GPLv2 |
| Operating Systems | POSIX Linux BSD Solaris HP-UX AIX OS X Windows XP/Vista/W7 |
| Implementation | C |
Recent releases


Release Notes: A major overhaul was undertaken, splitting the front and back ends. Fio can now be run as a server and a client, and it is possible to control jobs on multiple machines from a single client. Cheap and simple data scrambling is now used by default to defeat SSD compression/de-duplication. Completion latency percentile support was added. The terse output format was revised to version 3, adding disk utilization, IOPS, and latency percentiles. Pattern verifies were sped up. Various fixes were included for FreeBSD, Windows, HP-UX, Mac OS X, and AIX.


Release Notes: This release adds an RDMA IO engine, adds support for direct userspace reaping of completed events with libaio IO engine, ensures that bool options also work if given a parameter, adds support for "holed" IO patterns, fixes a latency reporting bug, fixes a disk utilization bug for delayed jobs, adds resolution support to fio_generate_plots, fixes summed computation of standard deviation, adds completion latency percentile support, and fixes lots of other minor bugs.


Release Notes: This is a quick release to fix a few issues in 1.56. It adds CPU process/thread affinity for Windows. It fixes an AIX compile issue. Raw disk size detection is supported for OS X. It fixes an infinite loop on platforms with very limited number of AIO request depth support (OS X). It fixes an issue with killing of threads that haven't started yet.


Release Notes: A performance issue with the Windows windowsaio engine was fixed. IOPS overflow was fixed for high IOPS on 32-bit builds. Support was added for the Linux FALLOC_FL_KEEP_SIZE flag. Anonymous mmaps are used for smalloc backing. A fix was made for the ramp_time option. A resource problem with the posixaio engine and Mac OS X is now handled. Support for HP-UX was added. Fixes and improvements were made to thread affinity. Support was added for a given percentage in the size= option. A Makefile depend issue was fixed. A man page syntax error and typographical errors were fixed. A fix was made for fill_device=1 and IO depths higher than 1.


Release Notes: This is a maintenance release. An issue was fixed with the splice IO engine, in which it didn't work correctly on file systems that did not support O_DIRECT. An issue was fixed where IO could span two separate regions, causing write verify failures. Warnings for gcc 4.6 were silenced.
Recent comments
14 Oct 2011 10:47
vjacheslav, there is synchronization support. See the stonewall/wait_for_previous primitive. You might also be interested in using exit_all to terminate the write part when the read part finishes.
09 Sep 2011 09:30
Thank you for this great job!
It will be nice to add jobs synchronization feature.
Reading data from HDD is much faster than writing so reading jobs could be finished sooner.
But I am interesting in performance measure in case of both jobs are running simultaneously.
Cause measuring writing performance after reading jobs finished could lead to incorrect results.
01 Sep 2011 20:48
Hi!
I am trying to modify fio to run smart data monitoring on SSDs during a run. Currently, all IO happens through a ioengine. Would it break the model if I just directly talked to the SG driver during the run, assuming I am not concerned about the IOs stalling?
Thanks,
Venu
11 Dec 2009 15:58
Chris, by all means, I'm interested in widening the scope of platform support. So please send it to me (axboe@kernel.dk), thanks.
Jens
11 Dec 2009 03:31
I work with Steve who wrote the comment on May 7, 2009.
We have ported fio version 1.31 to Mac OS 10.6.
If you guys are interested in taking our code, i.e.
we have added some files, a few routines and so forth
to make it work, let me know and i can get a tar ball
of what we have so you can take a peak and it would be good
if you guys could maintain it.....we certainly would be more
then willing to take any future versions you guys make
for Mac OS 10.6 and test it for you......since as Steve says, we find
it very useful.
Thx
chris