fio Disk I/O benchmark
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
fio --name=t --filename=<file> --size=1g
--rw=randread --bs=4k
fio <jobfile>
--ioengine=libaio --direct=1
--iodepth=<n>
--runtime=<s> --time_based
--numjobs=<n> --group_reporting
--output-format=json
fio --showcmd <jobfile>
Concepts
- Job file / CLI workload
- Jobs numjobs clones
- ioengine iodepth in flight
- Report IOPS, BW, latency
Running
fio <jobfile>
fio --name=<job> --rw=<mode> ...
fio --section=<name> <jobfile>
fio --output=<file> --output-format=<fmt>
fio --minimal <jobfile>
fio --showcmd <jobfile>
fio --parse-only <jobfile>
fio --readonly ...
fio --cmdhelp=<option>
fio --enghelpfio --eta-newline=<time>
fio --status-interval=<time>
fio --versionAccess pattern
--rw=read / write
--rw=randread / randwrite
--rw=randrw --rwmixread=<pct>
--rw=rw--bs=<size>
--bs=<r>,<w>
--bsrange=<lo>-<hi>
--bssplit=<size>/<pct>:...
--percentage_random=<pct>
--norandommap--randseed=<n>
--rw=trimSize and files
--filename=<path>
--directory=<dir>
--size=<size>
--io_size=<size>
--offset=<size>
--nrfiles=<n>
--filesize=<lo>-<hi>
--loops=<n>
--unlink=1Engine and queue
--ioengine=libaio
--ioengine=io_uring
--ioengine=psync
--ioengine=sync--ioengine=posixaio
--ioengine=null--iodepth=<n>
--iodepth_batch_submit=<n>
--direct=1--buffered=0--sync=1--fsync=<n>
--end_fsync=1--invalidate=0--hipri--fixedbufs --registerfiles
Time and load
--runtime=<time>
--time_based--ramp_time=<time>
--numjobs=<n>
--group_reporting
--rate=<bw>
--rate_iops=<n>
--thinktime=<us>
--startdelay=<time>
--cpus_allowed=<list>
--latency_target=<time>
Job files
[global]ioengine=libaiodirect=1runtime=60time_based[randread-4k]rw=randreadbs=4kiodepth=32
[global]stonewall--wait_for=<job>
exitall${VAR}filename=<dev>:<dev>
Output and logs
--output-format=json
--output-format=normal,json
--write_lat_log=<prefix>
--write_bw_log=<prefix>
--write_iops_log=<prefix>
--log_avg_msec=<ms>
--lat_percentiles=1
--verify=crc32c --do_verify=1
--refill_buffers
--client=<host> / --server
Recipes
fio --name=randread --filename=<file> --size=2g \ --rw=randread --bs=4k --ioengine=libaio --iodepth=32 \ --direct=1 --runtime=60 --time_based --group_reporting
fio --name=seqwrite --filename=<file> --size=4g \ --rw=write --bs=1m --ioengine=libaio --iodepth=8 \ --direct=1 --end_fsync=1
fio --name=mixed --filename=<file> --size=2g \ --rw=randrw --rwmixread=70 --bs=8k --iodepth=16 \ --direct=1 --numjobs=4 --runtime=60 --time_based \ --group_reporting --output-format=json --output=mixed.json
fio --name=lat --filename=<file> --size=1g \ --rw=randread --bs=4k --iodepth=1 --direct=1 \ --runtime=30 --time_based --lat_percentiles=1



