http://brick.kernel.dk/snaps/
+There are also two official mirrors. Both of these are synced within
+an hour of commits landing at git.kernel.dk. So if the main repo is
+down for some reason, either one of those is safe to use:
+
+ git://git.kernel.org/pub/scm/linux/kernel/git/axboe/fio.git
+ https://git.kernel.org/pub/scm/linux/kernel/git/axboe/fio.git
+
+or
+
+ git://github.com/axboe/fio.git
+ https://github.com/axboe/fio.git
+
Binary packages
---------------
$ make CROSS_COMPILE=/path/to/toolchain/prefix
Configure will attempt to determine the target platform automatically.
+It's possible to build fio for ESX as well, use the --esx switch to
+configure.
+
Windows
-------
-On Windows Cygwin (http://www.cygwin.com/) is required in order to
-build fio. To create an MSI installer package install WiX 3.7 from
+On Windows, Cygwin (http://www.cygwin.com/) is required in order to
+build fio. To create an MSI installer package install WiX 3.8 from
http://wixtoolset.org and run dobuild.cmd from the
os/windows directory.
-How to compile FIO on 64-bit Windows:
+How to compile fio on 64-bit Windows:
- 1. Install Cygwin (http://www.cygwin.com/setup.exe). Install 'make' and all
+ 1. Install Cygwin (http://www.cygwin.com/). Install 'make' and all
packages starting with 'mingw64-i686' and 'mingw64-x86_64'.
- 2. Download ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-9-1-release/dll/x64/pthreadGC2.dll
- and copy to the fio source directory.
- 3. Open the Cygwin Terminal.
- 4. Go to the fio directory (source files).
- 5. Run 'make clean'.
- 6. Run 'make'.
+ 2. Open the Cygwin Terminal.
+ 3. Go to the fio directory (source files).
+ 4. Run 'make clean && make -j'.
-To build fio on 32-bit Windows, download x86/pthreadGC2.dll instead and do
-'./configure --build-32bit-win=yes' before 'make'.
+To build fio on 32-bit Windows, run './configure --build-32bit-win' before 'make'.
It's recommended that once built or installed, fio be run in a Command Prompt
or other 'native' console such as console2, since there are known to be display
--parse-only Parse options only, don't start any IO
--output Write output to file
--runtime Runtime in seconds
- --latency-log Generate per-job latency logs
--bandwidth-log Generate per-job bandwidth logs
--minimal Minimal (terse) output
--output-format=type Output format (terse,json,normal)
--version Print version info and exit
--help Print this page
--cpuclock-test Perform test/validation of CPU clock
+ --crctest[=test] Test speed of checksum functions
--cmdhelp=cmd Print command help, "all" for all of them
--enghelp=engine Print ioengine help, or list available ioengines
--enghelp=engine,cmd Print help for an ioengine cmd
--warnings-fatal Fio parser warnings are fatal
--max-jobs Maximum number of threads/processes to support
--server=args Start backend server. See Client/Server section.
- --client=host Connect to specified backend.
+ --client=host Connect to specified backend(s).
+ --remote-config=file Tell fio server to load this local file
--idle-prof=option Report cpu idleness on a system or percpu basis
(option=system,percpu) or run unit work
calibration only (option=calibrate).
+ --inflate-log=log Inflate and output compressed log
Any parameters following the options will be assumed to be job files,
mutex Dump info only related to mutex up/down ops
profile Dump info related to profile extensions
time Dump info related to internal time keeping
+ net Dump info related to networking connections
+ rate Dump info related to IO rate switching
+ compress Dump info related to log compress/decompress
? or help Show available debug options.
One can specify multiple debug options: e.g. --debug=file,mem will enable
fio --client=<server1> <job file(s)> --client=<server2> <job file(s)>
+If the job file is located on the fio server, then you can tell the server
+to load a local file as well. This is done by using --remote-config:
+
+fio --client=server --remote-config /path/to/file.fio
+
+Then fio will open this local (to the server) job file instead
+of being passed one from the client.
+
+If you have many servers (example: 100 VMs/containers),
+you can input a pathname of a file containing host IPs/names as the parameter
+value for the --client option. For example, here is an example "host.list"
+file containing 2 hostnames:
+
+host1.your.dns.domain
+host2.your.dns.domain
+
+The fio command would then be:
+
+fio --client=host.list <job file(s)>
+
+In this mode, you cannot input server-specific parameters or job files -- all
+servers receive the same job file.
+
+In order to let fio --client runs use a shared filesystem
+from multiple hosts, fio --client now prepends the IP address of the
+server to the filename. For example, if fio is using directory /mnt/nfs/fio
+and is writing filename fileio.tmp, with a --client hostfile containing
+two hostnames h1 and h2 with IP addresses 192.168.10.120 and 192.168.10.121,
+then fio will create two files:
+
+ /mnt/nfs/fio/192.168.10.120.fileio.tmp
+ /mnt/nfs/fio/192.168.10.121.fileio.tmp
+
Platforms
---------
-Fio works on (at least) Linux, Solaris, AIX, HP-UX, OSX, NetBSD, Windows
-and FreeBSD. Some features and/or options may only be available on some of
-the platforms, typically because those features only apply to that platform
-(like the solarisaio engine, or the splice engine on Linux).
+Fio works on (at least) Linux, Solaris, AIX, HP-UX, OSX, NetBSD, OpenBSD,
+Windows and FreeBSD. Some features and/or options may only be available on
+some of the platforms, typically because those features only apply to that
+platform (like the solarisaio engine, or the splice engine on Linux).
Some features are not available on FreeBSD/Solaris even if they could be
implemented, I'd be happy to take patches for that. An example of that is