fio resides in a git repo, the canonical place is:
-git://brick.kernel.dk/data/git/fio.git
+git://git.kernel.dk/fio.git
+
+The http protocol also works, path is the same.
Snapshots are frequently generated and they include the git meta data as
well. You can download them here:
http://brick.kernel.dk/snaps/
-Pascal Bleser <guru@unixtech.be> has fio RPMs in his repository, you
-can find them here:
+Pascal Bleser <guru@unixtech.be> has fio RPMs in his repository for
+SUSE variants, you can find them here:
http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=System/fio
+Dag Wieƫrs has RPMs for Red Hat related distros, find them here:
+
+http://dag.wieers.com/rpm/packages/fio/
+
+Mandriva has integrated fio into their package repository, so installing
+on that distro should be as easy as typing 'urpmi fio'.
+
+
+Mailing list
+------------
+
+There's a mailing list associated with fio. It's meant for general
+discussion, bug reporting, questions - basically anything that has to
+do with fio. An automated mail detailing recent commits is automatically
+sent to the list at most daily. The list address is fio-devel@kernel.dk,
+subscribe by sending an empty email to fio-devel+subscribe@kernel.dk.
+
Building
--------
------------
$ fio
- -t <sec> Runtime in seconds
- -l Generate per-job latency logs
- -w Generate per-job bandwidth logs
- -o <file> Log output to file
- -m Minimal (terse) output
- -h Print help info
- -v Print version information and exit
-
-Any parameters following the options will be assumed to be job files.
-You can add as many as you want, each job file will be regarded as a
-separate group and fio will stonewall it's execution.
+ --debug Enable some debugging options (see below)
+ --output Write output to file
+ --timeout Runtime in seconds
+ --latency-log Generate per-job latency logs
+ --bandwidth-log Generate per-job bandwidth logs
+ --minimal Minimal (terse) output
+ --version Print version info and exit
+ --help Print this page
+ --cmdhelp=cmd Print command help, "all" for all of them
+ --showcmd Turn a job file into command line options
+ --readonly Turn on safety read-only checks, preventing writes
+ --eta=when When ETA estimate should be printed
+ May be "always", "never" or "auto"
+ --section=name Only run specified section in job file
+
+
+Any parameters following the options will be assumed to be job files,
+unless they match a job file parameter. You can add as many as you want,
+each job file will be regarded as a separate group and fio will stonewall
+its execution.
+
+The --readonly switch is an extra safety guard to prevent accidentically
+turning on a write setting when that is not desired. Fio will only write
+if rw=write/randwrite/rw/randrw is given, but this extra safety net can
+be used as an extra precaution. It will also enable a write check in the
+io engine core to prevent an accidental write due to a fio bug.
+
+The debug switch allows adding options that trigger certain logging
+options in fio. Currently the options are:
+
+ process Dump info related to processes
+ file Dump info related to file actions
+ io Dump info related to IO queuing
+ mem Dump info related to memory allocations
+ blktrace Dump info related to blktrace setup
+ verify Dump info related to IO verification
+ all Enable all debug options
+ random Dump info related to random offset generation
+ parse Dump info related to option matching and parsing
+ ? or help Show available debug options.
+
+You can specify as many as you want, eg --debug=file,mem will enable
+file and memory debugging.
+
+The section switch is meant to make it easier to ship a bigger job file
+instead of several smaller ones. Say you define a job file with light,
+moderate, and heavy parts. Then you can ask fio to run the given part
+only by giving it a --section=heavy command line option. The section
+option only applies to job sections, the reserved 'global' section is
+always parsed and taken into account.
Job file
--------
See the HOWTO file for a more detailed description of parameters and what
-they mean. This file contains the terse version. Only a few options can
-be controlled with command line parameters, generally it's a lot easier to
+they mean. This file contains the terse version. You can describe big and
+complex setups with the command line, but generally it's a lot easier to
just write a simple job file to describe the workload. The job file format
-is in the ini style format, as it's easy to read and write for the user.
+is in the ini style format, as that is easy to read and write for the user.
The job file parameters are:
name=x Use 'x' as the identifier for this job.
+ description=x 'x' is a text description of the job.
directory=x Use 'x' as the top level directory for storing files
filename=x Force the use of 'x' as the filename for all files
in this thread. If not given, fio will make up
size=x Set file size to x bytes (x string can include k/m/g)
ioengine=x 'x' may be: aio/libaio/linuxaio for Linux aio,
posixaio for POSIX aio, sync for regular read/write io,
- mmap for mmap'ed io, splice for using splice/vmsplice,
- or sgio for direct SG_IO io. The latter only works on
- Linux on SCSI (or SCSI-like devices, such as
- usb-storage or sata/libata driven) devices.
+ psync for regular pread/pwrite io, vsync for regular
+ readv/writev (with queuing emulation) mmap for mmap'ed
+ io, syslet-rw for syslet driven read/write, splice for
+ using splice/vmsplice, sgio for direct SG_IO io, net
+ for network io, or cpuio for a cycler burner load. sgio
+ only works on Linux on SCSI (or SCSI-like devices, such
+ as usb-storage or sata/libata driven) devices. Fio also
+ has a null io engine, which is mainly used for testing
+ fio itself.
+
iodepth=x For async io, allow 'x' ios in flight
overwrite=x If 'x', layout a write file first.
nrfiles=x Spread io load over 'x' number of files per job,
ratemin=x Quit if rate of x KiB/sec can't be met
ratecycle=x ratemin averaged over x msecs
cpumask=x Only allow job to run on CPUs defined by mask.
+ cpus_allowed=x Like 'cpumask', but allow text setting of CPU affinity.
fsync=x If writing with buffered IO, fsync after every
'x' blocks have been written.
end_fsync=x If 'x', run fsync() after end-of-job.
startdelay=x Start this thread x seconds after startup
- timeout=x Terminate x seconds after startup. Can include a
+ runtime=x Terminate x seconds after startup. Can include a
normal time suffix if not given in seconds, such as
'm' for minutes, 'h' for hours, and 'd' for days.
offset=x Start io at offset x (x string can include k/m/g)
ioscheduler=x Use ioscheduler 'x' for this job.
cpuload=x For a CPU io thread, percentage of CPU time to attempt
to burn.
- cpuchunks=x Split burn cycles into pieces of x.
+ cpuchunks=x Split burn cycles into pieces of x usecs.
Author