IO engine How do we issue io? We could be memory mapping the
file, we could be using regular read/write, we
- could be using splice, async io, syslet, or even
- SG (SCSI generic sg).
+ could be using splice, async io, or even SG
+ (SCSI generic sg).
IO depth If the io engine is async, how large a queuing
depth do we want to maintain?
filename=str Fio normally makes up a filename 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 filename for each of them to override the default. If
- the ioengine used is 'net', the filename is the host, port,
- and protocol to use in the format of =host,port,protocol.
- See ioengine=net for more. If the ioengine is file based, you
- can specify a number of files by separating the names with a
- ':' colon. So if you wanted a job to open /dev/sda and /dev/sdb
- as the two working files, you would use
- filename=/dev/sda:/dev/sdb. On Windows, disk devices are
- accessed as \\.\PhysicalDrive0 for the first device,
- \\.\PhysicalDrive1 for the second etc. Note: Windows and
- FreeBSD prevent write access to areas of the disk containing
- in-use data (e.g. filesystems).
+ a filename for each of them to override the default.
+ If the ioengine is file based, you can specify a number of
+ files by separating the names with a ':' colon. So if you
+ wanted a job to open /dev/sda and /dev/sdb as the two working
+ files, you would use filename=/dev/sda:/dev/sdb. On Windows,
+ disk devices are accessed as \\.\PhysicalDrive0 for the first
+ device, \\.\PhysicalDrive1 for the second etc. Note: Windows
+ and FreeBSD prevent write access to areas of the disk
+ containing in-use data (e.g. filesystems).
If the wanted filename does need to include a colon, then
escape that with a '\' character. For instance, if the filename
is "/dev/dsk/foo@3,0:c", then you would use
default of $jobname.$jobnum.$filenum will be used if
no other format specifier is given.
+unique_filename=bool To avoid collisions between networked clients, fio
+ defaults to prefixing any generated filenames (with a directory
+ specified) with the source of the client connecting. To disable
+ this behavior, set this option to 0.
+
opendir=str Tell fio to recursively add any file it can find in this
directory and down the file system tree.
trimwrite Mixed trims and writes. Blocks will be
trimmed first, then written to.
+ Fio defaults to read if the option is not specified.
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
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.
+ psync Basic pread(2) or pwrite(2) io. Default on all
+ supported operating systems except for Windows.
vsync Basic readv(2) or writev(2) IO.
- psyncv Basic preadv(2) or pwritev(2) IO.
+ pvsync Basic preadv(2) or pwritev(2) IO.
+
+ pvsync2 Basic preadv2(2) or pwritev2(2) IO.
libaio Linux native asynchronous io. Note that Linux
may only support queued behaviour with
solarisaio Solaris native asynchronous io.
windowsaio Windows native asynchronous io.
+ Default on Windows.
mmap File is memory mapped and data copied
to/from using memcpy(3).
vmsplice(2) to transfer data from user
space to the kernel.
- syslet-rw Use the syslet system calls to make
- regular read/write async.
-
sg SCSI generic sg v3 io. May either be
synchronous using the SG_IO ioctl, or if
the target is an sg character device
cpuio Doesn't transfer any data, but burns CPU
cycles according to the cpuload= and
- cpucycle= options. Setting cpuload=85
+ cpuchunks= options. Setting cpuload=85
will cause that job to do nothing but burn
85% of the CPU. In case of SMP machines,
use numjobs=<no_of_cpu> to get desired CPU
prio=int Set the io priority value of this job. Linux limits us to
a positive value between 0 and 7, with 0 being the highest.
- See man ionice(1).
+ See man ionice(1). Refer to an appropriate manpage for
+ other operating systems since meaning of priority may differ.
prioclass=int Set the io priority class. See man ionice(1).
The allowed values are:
malloc Use memory from malloc(3) as the buffers.
+ Default memory type.
shm Use shared memory as the buffers. Allocated
through shmget(2).