randread Random reads
rw,readwrite Sequential mixed reads and writes
randrw Random mixed reads and writes
+ trimwrite Mixed trims and writes. Blocks will be
+ trimmed first, then written to.
For the mixed io types, the default is to split them 50/50.
For certain types of io the result may still be skewed a bit,
If set, fio will use POSIX_FADV_SEQUENTIAL for sequential
IO and POSIX_FADV_RANDOM for random IO.
+fadvise_stream=int Notify the kernel what write stream ID to place these
+ writes under. Only supported on Linux. Note, this option
+ may change going forward.
+
size=int The total size of file io for this job. Fio will run until
this many bytes has been transferred, unless runtime is
- limited by other options (such as 'runtime', for instance).
- Unless specific nrfiles and filesize options are given,
- fio will divide this size between the available files
- specified by the job. If not set, fio will use the full
- size of the given files or devices. If the files do not
- exist, size must be given. It is also possible to give
- size as a percentage between 1 and 100. If size=20% is
- given, fio will use 20% of the full size of the given
- files or devices.
-
+ limited by other options (such as 'runtime', for instance,
+ or increased/decreased by 'io_size'). Unless specific nrfiles
+ and filesize options are given, fio will divide this size
+ between the available files specified by the job. If not set,
+ fio will use the full size of the given files or devices.
+ If the files do not exist, size must be given. It is also
+ possible to give size as a percentage between 1 and 100. If
+ size=20% is given, fio will use 20% of the full size of the
+ given files or devices.
+
+io_size=int
io_limit=int Normally fio operates within the region set by 'size', which
means that the 'size' option sets both the region and size of
IO to be performed. Sometimes that is not what you want. With
this option, it is possible to define just the amount of IO
that fio should do. For instance, if 'size' is set to 20G and
- 'io_limit' is set to 5G, fio will perform IO within the first
- 20G but exit when 5G have been done.
+ 'io_size' is set to 5G, fio will perform IO within the first
+ 20G but exit when 5G have been done. The opposite is also
+ possible - if 'size' is set to 20G, and 'io_size' is set to
+ 40G, then fio will do 40G of IO within the 0..20G region.
filesize=int Individual file sizes. May be a range, in which case fio
will select sizes for files at random within the given range
zero_buffers If this option is given, fio will init the IO buffers to
all zeroes. The default is to fill them with random data.
- The resulting IO buffers will not be completely zeroed,
- unless scramble_buffers is also turned off.
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
necessary environment variables to work with
hdfs/libhdfs properly.
+ mtd Read, write and erase an MTD character device
+ (e.g., /dev/mtd0). Discards are treated as
+ erases. Depending on the underlying device
+ type, the I/O may have to go in a certain
+ pattern, e.g., on NAND, writing sequentially
+ to erase blocks and discarding before
+ overwriting. The writetrim mode works well
+ for this constraint.
+
external Prefix to specify loading an external
IO engine object file. Append the engine
filename, eg ioengine=external:/tmp/foo.o
after fio has filled the queue of 16 requests, it will let
the depth drain down to 4 before starting to fill it again.
+io_submit_mode=str This option controls how fio submits the IO to
+ the IO engine. The default is 'inline', which means that the
+ fio job threads submit and reap IO directly. If set to
+ 'offload', the job threads will offload IO submission to a
+ dedicated pool of IO threads. This requires some coordination
+ and thus has a bit of extra overhead, especially for lower
+ queue depth IO where it can increase latencies. The benefit
+ is that fio can manage submission rates independently of
+ the device completion rates. This avoids skewed latency
+ reporting if IO gets back up on the device side (the
+ coordinated omission problem).
+
direct=bool If value is true, use non-buffered io. This is usually
O_DIRECT. Note that ZFS on Solaris doesn't support direct io.
On Windows the synchronous ioengines don't support direct io.
random IO. If this option is given, fio will just get a
new random offset without looking at past io history. This
means that some blocks may not be read or written, and that
- some blocks may be read/written more than once. This option
- is mutually exclusive with verify= if and only if multiple
- blocksizes (via bsrange=) are used, since fio only tracks
- complete rewrites of blocks.
+ some blocks may be read/written more than once. If this option
+ is used with verify= and multiple blocksizes (via bsrange=),
+ only intact blocks are verified, i.e., partially-overwritten
+ blocks are ignored.
softrandommap=bool See norandommap. If fio runs with the random block map
enabled and it fails to allocate the map, if this option is
command line parameter. The files will be stored with a
.fz suffix.
+block_error_percentiles=bool If set, record errors in trim block-sized
+ units from writes and trims and output a histogram of
+ how many trims it took to get to errors, and what kind
+ of error was encountered.
+
lockmem=int Pin down the specified amount of memory with mlock(2). Can
potentially be used instead of removing memory or booting
with less memory to simulate a smaller amount of memory.
completion latencies.
percentile_list=float_list Overwrite the default list of percentiles
- for completion latencies. Each number is a floating
- number in the range (0,100], and the maximum length of
- the list is 20. Use ':' to separate the numbers, and
- list the numbers in ascending order. For example,
- --percentile_list=99.5:99.9 will cause fio to report
- the values of completion latency below which 99.5% and
- 99.9% of the observed latencies fell, respectively.
+ for completion latencies and the block error histogram.
+ Each number is a floating number in the range (0,100],
+ and the maximum length of the list is 20. Use ':'
+ to separate the numbers, and list the numbers in ascending
+ order. For example, --percentile_list=99.5:99.9 will cause
+ fio to report the values of completion latency below which
+ 99.5% and 99.9% of the observed latencies fell, respectively.
clocksource=str Use the given clocksource as the base of timing. The
supported options are:
1 : allocate space immidietly inside defragment event,
and free right after event
+[mtd] skip_bad=bool Skip operations against known bad blocks.
6.0 Interpreting the output