opendir=str Tell fio to recursively add any file it can find in this
directory and down the file system tree.
+lockfile=str Fio defaults to not doing any locking 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:
+
+ none No locking. The default.
+ exclusive Only one thread/process may do IO,
+ excluding all others.
+ readwrite Read-write locking on the file. Many
+ readers may access the file at the
+ same time, but writes get exclusive
+ access.
+
+ 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 acqusition is
+ expensive, batching the lock/unlocks will speed up IO.
+
readwrite=str
rw=str Type of io pattern. Accepted values are:
and limited to 'size' in total (if that is given). If not
given, each created file is the same size.
+fill_device=bool 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.
+
blocksize=siint
bs=siint The block size used for the io units. Defaults to 4k. Values
can be given for both read and writes. If a single siint is
writes, however a second range can be given after a comma.
See bs=.
+bssplit=str Sometimes you want even finer grained control of the
+ block sizes issued, not just an even split between them.
+ This option allows you to weight various block sizes,
+ so that you are able to define a specific amount of
+ block sizes issued. The format for this option is:
+
+ bssplit=blocksize/percentage:blocksize/percentage
+
+ for as many block sizes as needed. So if you want to define
+ a workload that has 50% 64k blocks, 10% 4k blocks, and
+ 40% 32k blocks, you would write:
+
+ bssplit=4k/10:64k/50:32k/40
+
+ Ordering does not matter. If the percentage is left blank,
+ fio will fill in the remaining values evenly. So a bssplit
+ option like this one:
+
+ bssplit=4k/50:1k/:32k/
+
+ would have 50% 4k ios, and 25% 1k and 32k ios. The percentages
+ always add up to 100, if bssplit is given a range that adds
+ up to more, it will error out.
+
blocksize_unaligned
bs_unaligned If this option is given, any byte size value within bsrange
may be used as a block range. This typically wont work with
sync Basic read(2) or write(2) io. lseek(2) is
used to position the io location.
+ psync Basic pread(2) or pwrite(2) io.
+
+ vsync Basic readv(2) or writev(2) IO.
+
libaio Linux native asynchronous io.
posixaio glibc posix asynchronous io.
cycles according to the cpuload= and
cpucycle= options. Setting cpuload=85
will cause that job to do nothing but burn
- 85% of the CPU.
+ 85% of the CPU. In case of SMP machines,
+ use numjobs=<no_of_cpu> to get desired CPU
+ usage, as the cpuload only loads a single
+ CPU at the desired rate.
guasi The GUASI IO engine is the Generic Userspace
Asyncronous Syscall Interface approach
concurrency.
iodepth_batch=int This defines how many pieces of IO to submit at once.
- It defaults to the same as iodepth, but can be set lower
- if one so desires.
+ It defaults to 1 which means that we submit each IO
+ as soon as it is available, but can be raised to submit
+ bigger batches of IO at the time.
iodepth_low=int The low water mark indicating when to start filling
the queue again. Defaults to the same as iodepth, meaning
(timestamp, block number etc.). The block
number is verified.
- pattern Fill the IO buffers with a specific pattern,
- that we can use to verify. Depending on the
- width of the pattern, fio will fill 1/2/3/4
- bytes of the buffer at the time. The pattern
- cannot be larger than a 32-bit quantity. The
- given pattern is given as a postfix to this
- option, ala: verify=pattern:0x5a. It accepts
- both hex and dec values.
-
null Only pretend to verify. Useful for testing
internals with ioengine=null, not for much
else.
size of header_interval. blocksize should divide this
evenly.
+verify_pattern=int If set, fio will fill the io buffers with this
+ pattern. Fio defaults to filling with totally random
+ bytes, but sometimes it's interesting to fill with a known
+ pattern for io verification purposes. Depending on the
+ width of the pattern, fio will fill 1/2/3/4 bytes of the
+ buffer at the time. The verify_pattern cannot be larger than
+ a 32-bit quantity.
+
verify_fatal=bool Normally fio will keep checking the entire contents
before quitting on a block verification failure. If this
option is set, fio will exit the job on the first observed
Submission latency: min, max, mean, deviation
Completion latency: min, max, mean, deviation
Bw: min, max, aggregate percentage of total, mean, deviation
- CPU usage: user, system, context switches
+ CPU usage: user, system, context switches, major faults, minor faults
IO depths: <=1, 2, 4, 8, 16, 32, >=64
IO latencies: <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, >=2000
Text description