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,
since the speed may be different. It is possible to specify
- a number of IO's to do before getting a new offset - this
- is only useful for random IO, where fio would normally
- generate a new random offset for every IO. If you append
- eg 8 to randread, you would get a new random offset for
+ a number of IO's to do before getting a new offset, this is
+ one by appending a ':<nr>' to the end of the string given.
+ For a random read, it would look like 'rw=randread:8' for
+ passing in an offset modifier with a value of 8. See the
+ 'rw_sequencer' option.
+
+rw_sequencer=str If an offset modifier is given by appending a number to
+ the rw=<str> line, then this option controls how that
+ number modifies the IO offset being generated. Accepted
+ values are:
+
+ sequential Generate sequential offset
+ identical Generate the same offset
+
+ 'sequential' is only useful for random IO, where fio would
+ normally generate a new random offset for every IO. If you
+ append eg 8 to randread, you would get a new random offset for
every 8 IO's. The result would be a seek for only every 8
IO's, instead of for every IO. Use rw=randread:8 to specify
- that.
+ that. As sequential IO is already sequential, setting
+ 'sequential' for that would not result in any differences.
+ 'identical' behaves in a similar fashion, except it sends
+ the same offset 8 number of times before generating a new
+ offset.
kb_base=int 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
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.
+ specified by the job. If not set, fio will use the full
+ size of the given files or devices. If the the files
+ do not exist, size must be given.
filesize=int Individual file sizes. May be a range, in which case fio
will select sizes for files at random within the given range
meta Write extra information about each io
(timestamp, block number etc.). The block
- number is verified.
+ number is verified. See also verify_pattern.
null Only pretend to verify. Useful for testing
internals with ioengine=null, not for much
width of the pattern, fio will fill 1/2/3/4 bytes of the
buffer at the time(it can be either a decimal or a hex number).
The verify_pattern if larger than a 32-bit quantity has to
- be a hex number that starts with either "0x" or "0X".
+ be a hex number that starts with either "0x" or "0X". Use
+ with verify=meta.
verify_fatal=bool Normally fio will keep checking the entire contents
before quitting on a block verification failure. If this
for how to capture such logging data. For blktrace replay,
the file needs to be turned into a blkparse binary data
file first (blkparse <device> -o /dev/null -d file_for_fio.bin).
+
+replay_no_stall=int When replaying I/O with read_iolog the default behavior
+ is to attempt to respect the time stamps within the log and replay
+ them with the appropriate delay between IOPS. By setting this variable
+ fio will not respect the timestamps and attempt to replay them as fast
+ as possible while still respecting ordering. The result is the same
+ I/O pattern to a given device, but different timings.
write_bw_log=str If given, write a bandwidth log of the jobs in this job
file. Can be used to store data of the bandwidth of the
filename. For this option, the postfix is _bw.log.
write_lat_log=str Same as write_bw_log, except that this option stores io
- completion latencies instead. 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. So if one specifies
+ submission, completion, and total latencies instead. 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. So if one specifies
write_lat_log=foo
- The actual log names will be foo_clat.log and foo_slat.log.
- This helps fio_generate_plot fine the logs automatically.
+ The actual log names will be foo_slat.log, foo_slat.log,
+ and foo_lat.log. This helps fio_generate_plot fine the logs
+ automatically.
lockmem=int Pin down the specified amount of memory with mlock(2). Can
potentially be used instead of removing memory or booting
disk_util=bool Generate disk utilization statistics, if the platform
supports it. Defaults to on.
-disable_clat=bool Disable measurements of completion latency numbers. Useful
+disable_lat=bool Disable measurements of total 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.
+disable_clat=bool Disable measurements of completion latency numbers. See
+ disable_lat.
+
disable_slat=bool Disable measurements of submission latency numbers. See
- disable_clat.
+ disable_slat.
disable_bw=bool Disable measurements of throughput/bandwidth numbers. See
- disable_clat.
+ disable_lat.
gtod_reduce=bool Enable all of the gettimeofday() reducing options
(disable_clat, disable_slat, disable_bw) plus reduce
of the results, fio can output the results in a semicolon separated format.
The format is one long line of values, such as:
-client1;0;0;1906777;1090804;1790;0;0;0.000000;0.000000;0;0;0.000000;0.000000;929380;1152890;25.510151%;1078276.333333;128948.113404;0;0;0;0;0;0.000000;0.000000;0;0;0.000000;0.000000;0;0;0.000000%;0.000000;0.000000;100.000000%;0.000000%;324;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%;0.0%;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%
+2; client1;0;0;1906777;1090804;1790;0;0;0.000000;0.000000;0;0;0.000000;0.000000;929380;1152890;25.510151%;1078276.333333;128948.113404;0;0;0;0;0;0.000000;0.000000;0;0;0.000000;0.000000;0;0;0.000000%;0.000000;0.000000;100.000000%;0.000000%;324;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%;0.0%;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%
;0.0%;0.0%;0.0%;0.0%;0.0%
-To enable terse output, use the --minimal command line option.
+To enable terse output, use the --minimal command line option. The first
+value is the version of the terse output format. If the output has to
+be changed for some reason, this number will be incremented by 1 to
+signify that change.
Split up, the format is as follows:
- jobname, groupid, error
+ version, jobname, groupid, error
READ status:
KB IO, bandwidth (KB/sec), runtime (msec)
Submission latency: min, max, mean, deviation
Completion latency: min, max, mean, deviation
+ Total latency: min, max, mean, deviation
Bw: min, max, aggregate percentage of total, mean, deviation
WRITE status:
KB IO, bandwidth (KB/sec), runtime (msec)
Submission latency: min, max, mean, deviation
Completion latency: min, max, mean, deviation
+ Total latency: min, max, mean, deviation
Bw: min, max, aggregate percentage of total, mean, deviation
CPU usage: user, system, context switches, major faults, minor faults
IO depths: <=1, 2, 4, 8, 16, 32, >=64