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, including complete IO latencies and percentiles. 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

  •  15 May 2013 21:56

    Release Notes: Integration of the gfio GTK frontend. Better Android integration. The initial file fill honors data compression settings. An option for controlling randomness of I/O (percentage_random) instead of being fully random or fully sequential. Fixes a bug in uneven pattern sizes for verification. Various other important fixes.

    •  08 Apr 2013 21:55

      Release Notes: This release adds an --eta-newline option to insert ETA new line at fixed intervals. Fixes for the CPU clock, notably PPC. Fixes for workloads with read/write file locking. A fix for skewed latencies with rated IOPS. Fixes a bug with block sizes varying more than 64x. Improves the LFSR implementation. Fixes missing JSON bandwidth output. Various fixes for the Android platform. Uses ginstall on Solaris. Fixes man page installation. Other bugfixes and improvements.

      •  23 Feb 2013 00:40

        Release Notes: Autodetect features with a new configure script when building. Improve ETA for some workloads. Support for verify mode that requires no metadata, greatly reducing memory requirements for big device verify workloads. Ensures fsync is always done, even for direct/raw I/O (if asked to). Support for unified read/write/trim reporting. A few axmap and cpuclock bugfixes. Fixes zones and numjobs used together. Adds support for idle profiling, showing idle system CPU when running a workload. Various Windows fixes. FreeBSD now supports CPU affinities. Many other fixes; all users should upgrade.

        •  10 Jan 2013 06:47

          Release Notes: A few build issues were fixed on a few select platforms, where issues with CC override or missing CPU clock support would break compilation. Setting of size= for zipf/pareto workloads was fixed. Floating math for CPU clock was sped up and improved, further reducing overhead. A potential null pointer dereference on IO verification and requeue events was fixed.

          •  20 Dec 2012 12:48

            Release Notes: Android platform support was added. Memory consumption on Windows when using many files was reduced. Support for non-uniform random IO was added, using pareto/zipf distributions. A faster LFSR random generator was provided. Various fixes and improvements were made in the network engine. Ping-pong network IO is now supported. The default clock was sped up, and accuracy of the CPU clock was improved. A potential bi-modal performance issue on Linux with multiple processes and O_DIRECT was fixed. A timekeeping race bug with threads was fixed. NUMA job and memory control options were added. A bug in the CPU load engine was fixed. There were various other fixes and improvements.

            RSS Recent comments

            30 Nov 2012 18:10 bslade

            Getting 'stat64 already defined' type errors when trying to "make" fio on RedHat/Centos 6.3 (linux kernel 2.6.18-308). Nothing in the www.spinics.net/lists/fio mailing list archives about it. No response to my signup request to the fio@vger.kernel.org mailing list, so I'm posting this problem here.

            Has anybody else seen a problem like this?

            > make
            DEP .depend
            CC gettime.o
            : Assembler messages:
            :354: Error: symbol `fstatat64' is already defined
            :388: Error: symbol `fstat64' is already defined
            :418: Error: symbol `lstat64' is already defined
            :448: Error: symbol `stat64' is already defined
            :1704: Error: symbol `pread64' is already defined
            make: *** [gettime.o] Error 1

            25 Oct 2012 16:44 dschulz

            Id appreciate it if anyone here could let me know how to find that information.

            25 Oct 2012 16:43 dschulz

            When was the switch made to version 3 from version 2 of the headers for --minimal output and was something other than the order of the FIO Version/Jobname/Groupid/Error changed?

            moving between 1.5.8 and 2.0.10 it went from:
            fio 1.50
            2 job 0 0

            to

            3 fio-2.0.10 job 0 0

            10 Oct 2012 17:30 KeithLocke Thumbs up

            I have a couple of test requirements that I would appreciate guidance on how to perform with fio.

            1. 80/20 mix of random/sequential IO.
            2. 80% Random, 10% '00', & 10% 'FF' mixture of data patterns

            11 Jun 2012 12:09 anakon

            Hi Guys,

            I'm having an issue and I'd appreciate if someone could lend a hand.

            I am trying to generate latency logs and bandwidth logs with fio, but am having no luck.

            The settings I'm using are based off of the 1mbs_clients test :

            [global]
            size=32m
            rw=read
            directory=d:/tmp
            rate=1250
            ratemin=1024
            write_lat_log
            write_bw_log

            [file1]
            startdelay=0
            filename=file1test

            [file2]
            startdelay=4

            [file3]
            startdelay=8

            [file4]
            startdelay=12

            with the following command line (I have tries many other variations) :

            fio examples/1mbs_clients --section=file1 --output=d:/tmp/output.log

            but whatever I do, I can not generate the latency-log or bandwidth log.

            Any help would be greatly appreciated.

            Many Thanks,

            Adrian.

            Screenshot

            Project Spotlight

            STX B+ Tree

            C++ template classes implementing a B+ tree key/data container in main memory.

            Screenshot

            Project Spotlight

            SBuild Eclipse Plugin

            Eclipse IDE integration for SBuild.