Projects / fio

fio

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
Licenses
Operating Systems
Implementation

RSS Recent releases

  •  07 Feb 2012 15:45

    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.

    •  16 Sep 2011 14:24

      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.

      •  14 Jul 2011 21:23

        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.

        •  13 Jul 2011 13:23

          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.

          •  30 May 2011 06:30

            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.

            RSS Recent comments

            14 Oct 2011 10:47 axboe Thumbs up

            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 vjacheslav Thumbs up

            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 venunayar

            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 axboe Thumbs up

            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 cjdwoodbury Thumbs up

            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

            Screenshot

            Project Spotlight

            QtitanRibbon

            An implementation of Microsoft's UI ribbon for Qt.

            Screenshot

            Project Spotlight

            Mandingo

            A bot for the Urban Terror chat system.