.TH fio 1 "September 2007" "User Manual"
.SH NAME
fio \- flexible I/O tester
.SH SYNOPSIS
.B fio
[\fIoptions\fR] [\fIjobfile\fR]...
.SH DESCRIPTION
.B fio
is a tool that will spawn a number of threads or processes doing a
particular type of I/O action as specified by the user.
The typical use of fio is to write a job file matching the I/O load
one wants to simulate.
.SH OPTIONS
.TP
.BI \-\-output \fR=\fPfilename
Write output to \fIfilename\fR.
.TP
.BI \-\-timeout \fR=\fPtimeout
Limit run time to \fItimeout\fR seconds.
.TP
.B \-\-latency\-log
Generate per-job latency logs.
.TP
.B \-\-bandwidth\-log
Generate per-job bandwidth logs.
.TP
.B \-\-minimal
Print statistics in a terse, semicolon-delimited format.
.TP
.BI \-\-showcmd \fR=\fPjobfile
Convert \fIjobfile\fR to a set of command-line options.
.TP
.B \-\-readonly
Enable read-only safety checks.
.TP
.BI \-\-eta \fR=\fPwhen
Specifies when real-time ETA estimate should be printed.  \fIwhen\fR may
be one of `always', `never' or `auto'.
.TP
.BI \-\-section \fR=\fPsec
Only run section \fIsec\fR from job file.
.TP
.BI \-\-cmdhelp \fR=\fPcommand
Print help information for \fIcommand\fR.  May be `all' for all commands.
.TP
.BI \-\-debug \fR=\fPtype
Enable verbose tracing of various fio actions. May be `all' for all types
or individual types seperated by a comma (eg \-\-debug=io,file). `help' will
list all available tracing options.
.TP
.B \-\-help
Display usage information and exit.
.TP
.B \-\-version
Display version information and exit.
.SH "JOB FILE FORMAT"
Job files are in `ini' format. They consist of one or more
job definitions, which begin with a job name in square brackets and
extend to the next job name.  The job name can be any ASCII string
except `global', which has a special meaning.  Following the job name is
a sequence of zero or more parameters, one per line, that define the
behavior of the job.  Any line starting with a `;' or `#' character is
considered a comment and ignored.
.P
If \fIjobfile\fR is specified as `-', the job file will be read from
standard input.
.SS "Global Section"
The global section contains default parameters for jobs specified in the
job file.  A job is only affected by global sections residing above it,
and there may be any number of global sections.  Specific job definitions
may override any parameter set in global sections.
.SH "JOB PARAMETERS"
.SS Types
Some parameters may take arguments of a specific type.  The types used are:
.TP
.I str
String: a sequence of alphanumeric characters.
.TP
.I int
SI integer: a whole number, possibly containing a suffix denoting the base unit
of the value.  Accepted suffixes are `k', 'M', 'G', 'T', and 'P', denoting
kilo (1024), mega (1024^2), giga (1024^3), tera (1024^4), and peta (1024^5)
respectively. The suffix is not case sensitive. If prefixed with '0x', the
value is assumed to be base 16 (hexadecimal).
.TP
.I bool
Boolean: a true or false value. `0' denotes false, `1' denotes true.
.TP
.I irange
Integer range: a range of integers specified in the format
\fIlower\fR:\fIupper\fR or \fIlower\fR\-\fIupper\fR. \fIlower\fR and
\fIupper\fR may contain a suffix as described above.  If an option allows two
sets of ranges, they are separated with a `,' or `/' character. For example:
`8\-8k/8M\-4G'.
.SS "Parameter List"
.TP
.BI name \fR=\fPstr
May be used to override the job name.  On the command line, this parameter
has the special purpose of signalling the start of a new job.
.TP
.BI description \fR=\fPstr
Human-readable description of the job. It is printed when the job is run, but
otherwise has no special purpose.
.TP
.BI directory \fR=\fPstr
Prefix filenames with this directory.  Used to place files in a location other
than `./'.
.TP
.BI filename \fR=\fPstr
.B fio
normally makes up a file name based on the job name, thread number, and file
number. If you want to share files between threads in a job or several jobs,
specify a \fIfilename\fR for each of them to override the default. If the I/O
engine used is `net', \fIfilename\fR is the host and port to connect to in the
format \fIhost\fR/\fIport\fR. If the I/O engine is file-based, you can specify
a number of files by separating the names with a `:' character. `\-' is a
reserved name, meaning stdin or stdout, depending on the read/write direction
set.
.TP
.BI lockfile \fR=\fPstr
Fio defaults to not locking any files before it does IO to them. If a file or
file descriptor is shared, fio can serialize IO to that file to make the end
result consistent. This is usual for emulating real workloads that share files.
The lock modes are:
.RS
.RS
.TP
.B none
No locking. This is the default.
.TP
.B exclusive
Only one thread or process may do IO at the time, excluding all others.
.TP
.B readwrite
Read-write locking on the file. Many readers may access the file at the same
time, but writes get exclusive access.
.RE
.P
The option may be post-fixed with a lock batch number. If set, then each
thread/process may do that amount of IOs to the file before giving up the lock.
Since lock acquisition is expensive, batching the lock/unlocks will speed up IO.
.RE
.P
.BI opendir \fR=\fPstr
Recursively open any files below directory \fIstr\fR.
.TP
.BI readwrite \fR=\fPstr "\fR,\fP rw" \fR=\fPstr
Type of I/O pattern.  Accepted values are:
.RS
.RS
.TP
.B read
Sequential reads.
.TP
.B write
Sequential writes.
.TP
.B randread
Random reads.
.TP
.B randwrite
Random writes.
.TP
.B rw
Mixed sequential reads and writes.
.TP
.B randrw 
Mixed random reads and writes.
.RE
.P
For mixed I/O, the default split is 50/50.  For random I/O, the number of I/Os
to perform before getting a new offset can be specified by appending
`:\fIint\fR' to the pattern type.  The default is 1.
.RE
.TP
.BI kb_base \fR=\fPint
The base unit for a kilobyte. The defacto base is 2^10, 1024.  Storage
manufacturers like to use 10^3 or 1000 as a base ten unit instead, for obvious
reasons. Allow values are 1024 or 1000, with 1024 being the default.
.TP
.BI randrepeat \fR=\fPbool
Seed the random number generator in a predictable way so results are repeatable
across runs.  Default: true.
.TP
.BI fallocate \fR=\fPbool
By default, fio will use fallocate() to advise the system of the size of the
file we are going to write. This can be turned off with fallocate=0. May not
be available on all supported platforms.
.TP
.BI fadvise_hint \fR=\fPbool
Disable use of \fIposix_fadvise\fR\|(2) to advise the kernel what I/O patterns
are likely to be issued. Default: true.
.TP
.BI size \fR=\fPint
Total size of I/O for this job.  \fBfio\fR will run until this many bytes have
been transfered, unless limited by other options (\fBruntime\fR, for instance).
Unless \fBnr_files\fR and \fBfilesize\fR options are given, this amount will be
divided between the available files for the job.
.TP
.BI fill_device \fR=\fPbool
Sets size to something really large and waits for ENOSPC (no space left on
device) as the terminating condition. Only makes sense with sequential write.
For a read workload, the mount point will be filled first then IO started on
the result.
.TP
.BI filesize \fR=\fPirange
Individual file sizes. May be a range, in which case \fBfio\fR will select sizes
for files at random within the given range, limited to \fBsize\fR in total (if
that is given). If \fBfilesize\fR is not specified, each created file is the
same size.
.TP
.BI blocksize \fR=\fPint[,int] "\fR,\fB bs" \fR=\fPint[,int]
Block size for I/O units.  Default: 4k.  Values for reads and writes can be
specified separately in the format \fIread\fR,\fIwrite\fR, either of
which may be empty to leave that value at its default.
.TP
.BI blocksize_range \fR=\fPirange[,irange] "\fR,\fB bsrange" \fR=\fPirange[,irange]
Specify a range of I/O block sizes.  The issued I/O unit will always be a
multiple of the minimum size, unless \fBblocksize_unaligned\fR is set.  Applies
to both reads and writes if only one range is given, but can be specified
separately with a comma seperating the values. Example: bsrange=1k-4k,2k-8k.
Also (see \fBblocksize\fR).
.TP
.BI bssplit \fR=\fPstr
This option allows even finer grained control of the block sizes issued,
not just even splits between them. With this option, you can weight various
block sizes for exact control of the issued IO for a job that has mixed
block sizes. The format of the option is bssplit=blocksize/percentage,
optionally adding as many definitions as needed seperated by a colon.
Example: bssplit=4k/10:64k/50:32k/40 would issue 50% 64k blocks, 10% 4k
blocks and 40% 32k blocks. \fBbssplit\fR also supports giving separate
splits to reads and writes. The format is identical to what the
\fBbs\fR option accepts, the read and write parts are separated with a
comma.
.TP
.B blocksize_unaligned\fR,\fP bs_unaligned
If set, any size in \fBblocksize_range\fR may be used.  This typically won't
work with direct I/O, as that normally requires sector alignment.
.TP
.BI blockalign \fR=\fPint[,int] "\fR,\fB ba" \fR=\fPint[,int]
At what boundary to align random IO offsets. Defaults to the same as 'blocksize'
the minimum blocksize given.  Minimum alignment is typically 512b
for using direct IO, though it usually depends on the hardware block size.
This option is mutually exclusive with using a random map for files, so it
will turn off that option.
.TP
.B zero_buffers
Initialise buffers with all zeros. Default: fill buffers with random data.
.TP
.B refill_buffers
If this option is given, fio will refill the IO buffers on every submit. The
default is to only fill it at init time and reuse that data. Only makes sense
if zero_buffers isn't specified, naturally. If data verification is enabled,
refill_buffers is also automatically enabled.
.TP
.BI nrfiles \fR=\fPint
Number of files to use for this job.  Default: 1.
.TP
.BI openfiles \fR=\fPint
Number of files to keep open at the same time.  Default: \fBnrfiles\fR.
.TP
.BI file_service_type \fR=\fPstr
Defines how files to service are selected.  The following types are defined:
.RS
.RS
.TP
.B random
Choose a file at random
.TP
.B roundrobin
Round robin over open files (default).
.B sequential
Do each file in the set sequentially.
.RE
.P
The number of I/Os to issue before switching a new file can be specified by
appending `:\fIint\fR' to the service type.
.RE
.TP
.BI ioengine \fR=\fPstr
Defines how the job issues I/O.  The following types are defined:
.RS
.RS
.TP
.B sync
Basic \fIread\fR\|(2) or \fIwrite\fR\|(2) I/O.  \fIfseek\fR\|(2) is used to
position the I/O location.
.TP
.B psync
Basic \fIpread\fR\|(2) or \fIpwrite\fR\|(2) I/O.
.TP
.B vsync
Basic \fIreadv\fR\|(2) or \fIwritev\fR\|(2) I/O. Will emulate queuing by
coalescing adjacents IOs into a single submission.
.TP
.B libaio
Linux native asynchronous I/O.
.TP
.B posixaio
glibc POSIX asynchronous I/O using \fIaio_read\fR\|(3) and \fIaio_write\fR\|(3).
.TP
.B mmap
File is memory mapped with \fImmap\fR\|(2) and data copied using
\fImemcpy\fR\|(3).
.TP
.B splice
\fIsplice\fR\|(2) is used to transfer the data and \fIvmsplice\fR\|(2) to
transfer data from user-space to the kernel.
.TP
.B syslet-rw
Use the syslet system calls to make regular read/write asynchronous.
.TP
.B sg
SCSI generic sg v3 I/O. May be either synchronous using the SG_IO ioctl, or if
the target is an sg character device, we use \fIread\fR\|(2) and
\fIwrite\fR\|(2) for asynchronous I/O.
.TP
.B null
Doesn't transfer any data, just pretends to.  Mainly used to exercise \fBfio\fR
itself and for debugging and testing purposes.
.TP
.B net
Transfer over the network.  \fBfilename\fR must be set appropriately to
`\fIhost\fR/\fIport\fR' regardless of data direction.  If receiving, only the
\fIport\fR argument is used.
.TP
.B netsplice
Like \fBnet\fR, but uses \fIsplice\fR\|(2) and \fIvmsplice\fR\|(2) to map data
and send/receive.
.TP
.B cpuio
Doesn't transfer any data, but burns CPU cycles according to \fBcpuload\fR and
\fBcpucycles\fR parameters.
.TP
.B guasi
The GUASI I/O engine is the Generic Userspace Asynchronous Syscall Interface
approach to asycnronous I/O.
.br
See <http://www.xmailserver.org/guasi\-lib.html>.
.TP
.B external
Loads an external I/O engine object file.  Append the engine filename as
`:\fIenginepath\fR'.
.RE
.RE
.TP
.BI iodepth \fR=\fPint
Number of I/O units to keep in flight against the file.  Default: 1.
.TP
.BI iodepth_batch \fR=\fPint
Number of I/Os to submit at once.  Default: \fBiodepth\fR.
.TP
.BI iodepth_batch_complete \fR=\fPint
This defines how many pieces of IO to retrieve at once. It defaults to 1 which
 means that we'll ask for a minimum of 1 IO in the retrieval process from the
kernel. The IO retrieval will go on until we hit the limit set by
\fBiodepth_low\fR. If this variable is set to 0, then fio will always check for
completed events before queuing more IO. This helps reduce IO latency, at the
cost of more retrieval system calls.
.TP
.BI iodepth_low \fR=\fPint
Low watermark indicating when to start filling the queue again.  Default:
\fBiodepth\fR. 
.TP
.BI direct \fR=\fPbool
If true, use non-buffered I/O (usually O_DIRECT).  Default: false.
.TP
.BI buffered \fR=\fPbool
If true, use buffered I/O.  This is the opposite of the \fBdirect\fR parameter.
Default: true.
.TP
.BI offset \fR=\fPint
Offset in the file to start I/O. Data before the offset will not be touched.
.TP
.BI fsync \fR=\fPint
How many I/Os to perform before issuing an \fBfsync\fR\|(2) of dirty data.  If
0, don't sync.  Default: 0.
.TP
.BI fdatasync \fR=\fPint
Like \fBfsync\fR, but uses \fBfdatasync\fR\|(2) instead to only sync the
data parts of the file. Default: 0.
.TP
.BI sync_file_range \fR=\fPstr:int
Use sync_file_range() for every \fRval\fP number of write operations. Fio will
track range of writes that have happened since the last sync_file_range() call.
\fRstr\fP can currently be one or more of:
.RS
.TP
.B wait_before
SYNC_FILE_RANGE_WAIT_BEFORE
.TP
.B write
SYNC_FILE_RANGE_WRITE
.TP
.B wait_after
SYNC_FILE_RANGE_WRITE
.TP
.RE
.P
So if you do sync_file_range=wait_before,write:8, fio would use
\fBSYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE\fP for every 8 writes.
Also see the sync_file_range(2) man page.  This option is Linux specific.
.TP
.BI overwrite \fR=\fPbool
If writing, setup the file first and do overwrites.  Default: false.
.TP
.BI end_fsync \fR=\fPbool
Sync file contents when job exits.  Default: false.
.TP
.BI fsync_on_close \fR=\fPbool
If true, sync file contents on close.  This differs from \fBend_fsync\fR in that
it will happen on every close, not just at the end of the job.  Default: false.
.TP
.BI rwmixcycle \fR=\fPint
How many milliseconds before switching between reads and writes for a mixed
workload. Default: 500ms.
.TP
.BI rwmixread \fR=\fPint
Percentage of a mixed workload that should be reads. Default: 50.
.TP
.BI rwmixwrite \fR=\fPint
Percentage of a mixed workload that should be writes.  If \fBrwmixread\fR and
\fBrwmixwrite\fR are given and do not sum to 100%, the latter of the two
overrides the first. This may interfere with a given rate setting, if fio is
asked to limit reads or writes to a certain rate. If that is the case, then
the distribution may be skewed. Default: 50.
.TP
.B norandommap
Normally \fBfio\fR will cover every block of the file when doing random I/O. If
this parameter is given, a new offset will be chosen without looking at past
I/O history.  This parameter is mutually exclusive with \fBverify\fR.
.TP
.B softrandommap
See \fBnorandommap\fR. If fio runs with the random block map enabled and it
fails to allocate the map, if this option is set it will continue without a
random block map. As coverage will not be as complete as with random maps, this
option is disabled by default.
.TP
.BI nice \fR=\fPint
Run job with given nice value.  See \fInice\fR\|(2).
.TP
.BI prio \fR=\fPint
Set I/O priority value of this job between 0 (highest) and 7 (lowest).  See
\fIionice\fR\|(1).
.TP
.BI prioclass \fR=\fPint
Set I/O priority class.  See \fIionice\fR\|(1).
.TP
.BI thinktime \fR=\fPint
Stall job for given number of microseconds between issuing I/Os.
.TP
.BI thinktime_spin \fR=\fPint
Pretend to spend CPU time for given number of microseconds, sleeping the rest
of the time specified by \fBthinktime\fR.  Only valid if \fBthinktime\fR is set.
.TP
.BI thinktime_blocks \fR=\fPint
Number of blocks to issue before waiting \fBthinktime\fR microseconds.
Default: 1.
.TP
.BI rate \fR=\fPint
Cap bandwidth used by this job. The number is in bytes/sec, the normal postfix
rules apply. You can use \fBrate\fR=500k to limit reads and writes to 500k each,
or you can specify read and writes separately. Using \fBrate\fR=1m,500k would
limit reads to 1MB/sec and writes to 500KB/sec. Capping only reads or writes
can be done with \fBrate\fR=,500k or \fBrate\fR=500k,. The former will only
limit writes (to 500KB/sec), the latter will only limit reads.
.TP
.BI ratemin \fR=\fPint
Tell \fBfio\fR to do whatever it can to maintain at least the given bandwidth.
Failing to meet this requirement will cause the job to exit. The same format
as \fBrate\fR is used for read vs write separation.
.TP
.BI rate_iops \fR=\fPint
Cap the bandwidth to this number of IOPS. Basically the same as rate, just
specified independently of bandwidth. The same format as \fBrate\fR is used for
read vs write seperation. If \fBblocksize\fR is a range, the smallest block
size is used as the metric.
.TP
.BI rate_iops_min \fR=\fPint
If this rate of I/O is not met, the job will exit. The same format as \fBrate\fR
is used for read vs write seperation.
.TP
.BI ratecycle \fR=\fPint
Average bandwidth for \fBrate\fR and \fBratemin\fR over this number of
milliseconds.  Default: 1000ms.
.TP
.BI cpumask \fR=\fPint
Set CPU affinity for this job. \fIint\fR is a bitmask of allowed CPUs the job
may run on.  See \fBsched_setaffinity\fR\|(2).
.TP
.BI cpus_allowed \fR=\fPstr
Same as \fBcpumask\fR, but allows a comma-delimited list of CPU numbers.
.TP
.BI startdelay \fR=\fPint
Delay start of job for the specified number of seconds.
.TP
.BI runtime \fR=\fPint
Terminate processing after the specified number of seconds.
.TP
.B time_based
If given, run for the specified \fBruntime\fR duration even if the files are
completely read or written. The same workload will be repeated as many times
as \fBruntime\fR allows.
.TP
.BI ramp_time \fR=\fPint
If set, fio will run the specified workload for this amount of time before
logging any performance numbers. Useful for letting performance settle before
logging results, thus minimizing the runtime required for stable results. Note
that the \fBramp_time\fR is considered lead in time for a job, thus it will
increase the total runtime if a special timeout or runtime is specified.
.TP
.BI invalidate \fR=\fPbool
Invalidate buffer-cache for the file prior to starting I/O.  Default: true.
.TP
.BI sync \fR=\fPbool
Use synchronous I/O for buffered writes.  For the majority of I/O engines,
this means using O_SYNC.  Default: false.
.TP
.BI iomem \fR=\fPstr "\fR,\fP mem" \fR=\fPstr
Allocation method for I/O unit buffer.  Allowed values are:
.RS
.RS
.TP
.B malloc
Allocate memory with \fImalloc\fR\|(3).
.TP
.B shm
Use shared memory buffers allocated through \fIshmget\fR\|(2).
.TP
.B shmhuge
Same as \fBshm\fR, but use huge pages as backing.
.TP
.B mmap
Use \fImmap\fR\|(2) for allocation.  Uses anonymous memory unless a filename
is given after the option in the format `:\fIfile\fR'.
.TP
.B mmaphuge
Same as \fBmmap\fR, but use huge files as backing.
.RE
.P
The amount of memory allocated is the maximum allowed \fBblocksize\fR for the
job multiplied by \fBiodepth\fR.  For \fBshmhuge\fR or \fBmmaphuge\fR to work,
the system must have free huge pages allocated.  \fBmmaphuge\fR also needs to
have hugetlbfs mounted, and \fIfile\fR must point there. At least on Linux,
huge pages must be manually allocated. See \fB/proc/sys/vm/nr_hugehages\fR
and the documentation for that. Normally you just need to echo an appropriate
number, eg echoing 8 will ensure that the OS has 8 huge pages ready for
use.
.RE
.TP
.BI iomem_align \fR=\fPint
This indiciates the memory alignment of the IO memory buffers. Note that the
given alignment is applied to the first IO unit buffer, if using \fBiodepth\fR
the alignment of the following buffers are given by the \fBbs\fR used. In
other words, if using a \fBbs\fR that is a multiple of the page sized in the
system, all buffers will be aligned to this value. If using a \fBbs\fR that
is not page aligned, the alignment of subsequent IO memory buffers is the
sum of the \fBiomem_align\fR and \fBbs\fR used.
.TP
.BI hugepage\-size \fR=\fPint
Defines the size of a huge page.  Must be at least equal to the system setting.
Should be a multiple of 1MB. Default: 4MB.
.TP
.B exitall
Terminate all jobs when one finishes.  Default: wait for each job to finish.
.TP
.BI bwavgtime \fR=\fPint
Average bandwidth calculations over the given time in milliseconds.  Default:
500ms.
.TP
.BI create_serialize \fR=\fPbool
If true, serialize file creation for the jobs.  Default: true.
.TP
.BI create_fsync \fR=\fPbool
\fIfsync\fR\|(2) data file after creation.  Default: true.
.TP
.BI create_on_open \fR=\fPbool
If true, the files are not created until they are opened for IO by the job.
.TP
.BI pre_read \fR=\fPbool
If this is given, files will be pre-read into memory before starting the given
IO operation. This will also clear the \fR \fBinvalidate\fR flag, since it is
pointless to pre-read and then drop the cache. This will only work for IO
engines that are seekable, since they allow you to read the same data
multiple times. Thus it will not work on eg network or splice IO.
.TP
.BI unlink \fR=\fPbool
Unlink job files when done.  Default: false.
.TP
.BI loops \fR=\fPint
Specifies the number of iterations (runs of the same workload) of this job.
Default: 1.
.TP
.BI do_verify \fR=\fPbool
Run the verify phase after a write phase.  Only valid if \fBverify\fR is set.
Default: true.
.TP
.BI verify \fR=\fPstr
Method of verifying file contents after each iteration of the job.  Allowed
values are:
.RS
.RS
.TP
.B md5 crc16 crc32 crc32c crc32c-intel crc64 crc7 sha256 sha512 sha1
Store appropriate checksum in the header of each block. crc32c-intel is
hardware accelerated SSE4.2 driven, falls back to regular crc32c if
not supported by the system.
.TP
.B meta
Write extra information about each I/O (timestamp, block number, etc.). The
block number is verified.
.TP
.B pattern
Fill I/O buffers with a specific pattern that is used to verify. If the pattern
is < 4bytes, it can either be a decimal or a hexadecimal number. If the pattern
is > 4bytes, currently, it can only be a hexadecimal pattern starting with
either "0x" or "0X".
.TP
.B null
Pretend to verify.  Used for testing internals.
.RE

This option can be used for repeated burn-in tests of a system to make sure
that the written data is also correctly read back. If the data direction given
is a read or random read, fio will assume that it should verify a previously
written file. If the data direction includes any form of write, the verify will
be of the newly written data.
.RE
.TP
.BI verify_sort \fR=\fPbool
If true, written verify blocks are sorted if \fBfio\fR deems it to be faster to
read them back in a sorted manner.  Default: true.
.TP
.BI verify_offset \fR=\fPint
Swap the verification header with data somewhere else in the block before
writing.  It is swapped back before verifying.
.TP
.BI verify_interval \fR=\fPint
Write the verification header for this number of bytes, which should divide
\fBblocksize\fR.  Default: \fBblocksize\fR.
.TP
.BI verify_fatal \fR=\fPbool
If true, exit the job on the first observed verification failure.  Default:
false.
.TP
.BI verify_async \fR=\fPint
Fio will normally verify IO inline from the submitting thread. This option
takes an integer describing how many async offload threads to create for IO
verification instead, causing fio to offload the duty of verifying IO contents
to one or more separate threads.  If using this offload option, even sync IO
engines can benefit from using an \fBiodepth\fR setting higher than 1, as it
allows them to have IO in flight while verifies are running.
.TP
.BI verify_async_cpus \fR=\fPstr
Tell fio to set the given CPU affinity on the async IO verification threads.
See \fBcpus_allowed\fP for the format used.
.TP
.BI verify_backlog \fR=\fPint
Fio will normally verify the written contents of a job that utilizes verify
once that job has completed. In other words, everything is written then
everything is read back and verified. You may want to verify continually
instead for a variety of reasons. Fio stores the meta data associated with an
IO block in memory, so for large verify workloads, quite a bit of memory would
be used up holding this meta data. If this option is enabled, fio will verify
the previously written blocks before continuing to write new ones.
.TP
.BI verify_backlog_batch \fR=\fPint
Control how many blocks fio will verify if verify_backlog is set. If not set,
will default to the value of \fBverify_backlog\fR (meaning the entire queue is
read back and verified).
.TP
.B stonewall
Wait for preceeding jobs in the job file to exit before starting this one.
\fBstonewall\fR implies \fBnew_group\fR.
.TP
.B new_group
Start a new reporting group.  If not given, all jobs in a file will be part
of the same reporting group, unless separated by a stonewall.
.TP
.BI numjobs \fR=\fPint
Number of clones (processes/threads performing the same workload) of this job.  
Default: 1.
.TP
.B group_reporting
If set, display per-group reports instead of per-job when \fBnumjobs\fR is
specified.
.TP
.B thread
Use threads created with \fBpthread_create\fR\|(3) instead of processes created
with \fBfork\fR\|(2).
.TP
.BI zonesize \fR=\fPint
Divide file into zones of the specified size in bytes.  See \fBzoneskip\fR.
.TP
.BI zoneskip \fR=\fPint
Skip the specified number of bytes when \fBzonesize\fR bytes of data have been
read.
.TP
.BI write_iolog \fR=\fPstr
Write the issued I/O patterns to the specified file.
.TP
.BI read_iolog \fR=\fPstr
Replay the I/O patterns contained in the specified file generated by
\fBwrite_iolog\fR, or may be a \fBblktrace\fR binary file.
.TP
.B write_bw_log \fR=\fPstr
If given, write a bandwidth log of the jobs in this job file. Can be used to
store data of the bandwidth of the jobs in their lifetime. The included
fio_generate_plots script uses gnuplot to turn these text files into nice
graphs. See \fBwrite_log_log\fR for behaviour of given filename. For this
option, the postfix is _bw.log.
.TP
.B write_lat_log
Same as \fBwrite_bw_log\fR, but writes I/O completion latencies.  If no
filename is given with this option, the default filename of "jobname_type.log"
is used. Even if the filename is given, fio will still append the type of log.
.TP
.B disable_clat \fR=\fPbool
Disable measurements of completion latency numbers. Useful only for cutting
back the number of calls to gettimeofday, as that does impact performance at
really high IOPS rates.  Note that to really get rid of a large amount of these
calls, this option must be used with disable_slat and disable_bw as well.
.TP
.B disable_slat \fR=\fPbool
Disable measurements of submission latency numbers. See \fBdisable_clat\fR.
.TP
.B disable_bw_measurement \fR=\fPbool
Disable measurements of throughput/bandwidth numbers. See \fBdisable_clat\fR.
.TP
.BI lockmem \fR=\fPint
Pin the specified amount of memory with \fBmlock\fR\|(2).  Can be used to
simulate a smaller amount of memory.
.TP
.BI exec_prerun \fR=\fPstr
Before running the job, execute the specified command with \fBsystem\fR\|(3).
.TP
.BI exec_postrun \fR=\fPstr
Same as \fBexec_prerun\fR, but the command is executed after the job completes.
.TP
.BI ioscheduler \fR=\fPstr
Attempt to switch the device hosting the file to the specified I/O scheduler.
.TP
.BI cpuload \fR=\fPint
If the job is a CPU cycle-eater, attempt to use the specified percentage of
CPU cycles.
.TP
.BI cpuchunks \fR=\fPint
If the job is a CPU cycle-eater, split the load into cycles of the
given time in milliseconds.
.TP
.BI disk_util \fR=\fPbool
Generate disk utilization statistics if the platform supports it. Default: true.
.TP
.BI gtod_reduce \fR=\fPbool
Enable all of the gettimeofday() reducing options (disable_clat, disable_slat,
disable_bw) plus reduce precision of the timeout somewhat to really shrink the
gettimeofday() call count. With this option enabled, we only do about 0.4% of
the gtod() calls we would have done if all time keeping was enabled.
.TP
.BI gtod_cpu \fR=\fPint
Sometimes it's cheaper to dedicate a single thread of execution to just getting
the current time. Fio (and databases, for instance) are very intensive on
gettimeofday() calls. With this option, you can set one CPU aside for doing
nothing but logging current time to a shared memory location. Then the other
threads/processes that run IO workloads need only copy that segment, instead of
entering the kernel with a gettimeofday() call. The CPU set aside for doing
these time calls will be excluded from other uses. Fio will manually clear it
from the CPU mask of other jobs.
.TP
.BI cgroup \fR=\fPstr
Add job to this control group. If it doesn't exist, it will be created.
The system must have a mounted cgroup blkio mount point for this to work. If
your system doesn't have it mounted, you can do so with:

# mount -t cgroup -o blkio none /cgroup
.TP
.BI cgroup_weight \fR=\fPint
Set the weight of the cgroup to this value. See the documentation that comes
with the kernel, allowed values are in the range of 100..1000.
.TP
.BI cgroup_nodelete \fR=\fPbool
Normally fio will delete the cgroups it has created after the job completion.
To override this behavior and to leave cgroups around after the job completion,
set cgroup_nodelete=1. This can be useful if one wants to inspect various
cgroup files after job completion. Default: false
.TP
.BI uid \fR=\fPint
Instead of running as the invoking user, set the user ID to this value before
the thread/process does any work.
.TP
.BI gid \fR=\fPint
Set group ID, see \fBuid\fR.
.SH OUTPUT
While running, \fBfio\fR will display the status of the created jobs.  For
example:
.RS
.P
Threads: 1: [_r] [24.8% done] [ 13509/  8334 kb/s] [eta 00h:01m:31s]
.RE
.P
The characters in the first set of brackets denote the current status of each
threads.  The possible values are:
.P
.PD 0
.RS
.TP
.B P
Setup but not started.
.TP
.B C
Thread created.
.TP
.B I
Initialized, waiting.
.TP
.B R
Running, doing sequential reads.
.TP
.B r
Running, doing random reads.
.TP
.B W
Running, doing sequential writes.
.TP
.B w
Running, doing random writes.
.TP
.B M
Running, doing mixed sequential reads/writes.
.TP
.B m
Running, doing mixed random reads/writes.
.TP
.B F
Running, currently waiting for \fBfsync\fR\|(2).
.TP
.B V
Running, verifying written data.
.TP
.B E
Exited, not reaped by main thread.
.TP
.B \-
Exited, thread reaped.
.RE
.PD
.P
The second set of brackets shows the estimated completion percentage of
the current group.  The third set shows the read and write I/O rate,
respectively. Finally, the estimated run time of the job is displayed.
.P
When \fBfio\fR completes (or is interrupted by Ctrl-C), it will show data
for each thread, each group of threads, and each disk, in that order.
.P
Per-thread statistics first show the threads client number, group-id, and
error code.  The remaining figures are as follows:
.RS
.TP
.B io
Number of megabytes of I/O performed.
.TP
.B bw
Average data rate (bandwidth).
.TP
.B runt
Threads run time.
.TP
.B slat
Submission latency minimum, maximum, average and standard deviation. This is
the time it took to submit the I/O.
.TP
.B clat
Completion latency minimum, maximum, average and standard deviation.  This
is the time between submission and completion.
.TP
.B bw
Bandwidth minimum, maximum, percentage of aggregate bandwidth received, average
and standard deviation.
.TP
.B cpu
CPU usage statistics. Includes user and system time, number of context switches
this thread went through and number of major and minor page faults.
.TP
.B IO depths
Distribution of I/O depths.  Each depth includes everything less than (or equal)
to it, but greater than the previous depth.
.TP
.B IO issued
Number of read/write requests issued, and number of short read/write requests.
.TP
.B IO latencies
Distribution of I/O completion latencies.  The numbers follow the same pattern
as \fBIO depths\fR.
.RE
.P
The group statistics show:
.PD 0
.RS
.TP
.B io
Number of megabytes I/O performed.
.TP
.B aggrb
Aggregate bandwidth of threads in the group.
.TP
.B minb
Minimum average bandwidth a thread saw.
.TP
.B maxb
Maximum average bandwidth a thread saw.
.TP
.B mint
Shortest runtime of threads in the group.
.TP
.B maxt
Longest runtime of threads in the group.
.RE
.PD
.P
Finally, disk statistics are printed with reads first:
.PD 0
.RS
.TP
.B ios
Number of I/Os performed by all groups.
.TP
.B merge
Number of merges in the I/O scheduler.
.TP
.B ticks
Number of ticks we kept the disk busy.
.TP
.B io_queue
Total time spent in the disk queue.
.TP
.B util
Disk utilization.
.RE
.PD
.SH TERSE OUTPUT
If the \fB\-\-minimal\fR option is given, the results will be printed in a
semicolon-delimited format suitable for scripted use.  The fields are:
.P
.RS
.B jobname, groupid, error
.P
Read status:
.RS
.B KB I/O, bandwidth \fR(KB/s)\fP, runtime \fR(ms)\fP
.P
Submission latency:
.RS
.B min, max, mean, standard deviation
.RE
Completion latency:
.RS
.B min, max, mean, standard deviation
.RE
Bandwidth:
.RS
.B min, max, aggregate percentage of total, mean, standard deviation
.RE
.RE
.P
Write status:
.RS
.B KB I/O, bandwidth \fR(KB/s)\fP, runtime \fR(ms)\fP
.P
Submission latency:
.RS
.B min, max, mean, standard deviation
.RE
Completion latency:
.RS
.B min, max, mean, standard deviation
.RE
Bandwidth:
.RS
.B min, max, aggregate percentage of total, mean, standard deviation
.RE
.RE
.P
CPU usage:
.RS
.B user, system, context switches, major page faults, minor page faults
.RE
.P
IO depth distribution:
.RS
.B <=1, 2, 4, 8, 16, 32, >=64
.RE
.P
IO latency distribution (ms):
.RS
.B <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, >=2000
.RE
.P
.B text description
.RE
.SH AUTHORS
.B fio
was written by Jens Axboe <jens.axboe@oracle.com>,
now Jens Axboe <jaxboe@fusionio.com>.
.br
This man page was written by Aaron Carroll <aaronc@cse.unsw.edu.au> based
on documentation by Jens Axboe.
.SH "REPORTING BUGS"
Report bugs to the \fBfio\fR mailing list <fio@vger.kernel.org>.
See \fBREADME\fR.
.SH "SEE ALSO"
For further documentation see \fBHOWTO\fR and \fBREADME\fR.
.br
Sample jobfiles are available in the \fBexamples\fR directory.

