Skip to content
Animesh Trivedi edited this page Sep 24, 2024 · 7 revisions

Bookmarks

make install DESTDIR=/home/atr/local/

Representative command

fio --name="iouring" --bs=4K --iodepth=1 --numjobs=1 --cpus_allowed=0 --time_based=1 --ramp_time=5s --runtime=30s --ioengine=io_uring --registerfiles=1 --fixedbufs=1 --ioscheduler=none --size=100% --norandommap=1 --group_reporting=1 --direct=1 --rw=randread --allow_file_create=0 --filename=/home/animesh.trivedi/mnt/tmpfs/
# --output-format=json   -o ./logs-20240729-17h16m57s/bs_4Ki_qd_1.json 

Frequency used fio configurations and setups

Fio output explained: https://tobert.github.io/post/2014-04-17-fio-output-explained.html

Fio BW output has following fields

(https://github.com/axboe/fio/issues/538) Their documentation is not entirely complete or consistent.

        "io_bytes" : 24122617856,
        "io_kbytes" : 23557244,
        "bw_bytes" : 804060459,
        "bw" : 785215,
        "iops" : 196303.789874,
        "runtime" : 30001,
        "total_ios" : 5889310,
        "short_ios" : 0,
        "drop_ios" : 0,

        "bw_min" : 779511,
        "bw_max" : 791024,
        "bw_agg" : 100.000000,
        "bw_mean" : 785431.766667,
        "bw_dev" : 2992.810540,
        "bw_samples" : 60,
        "iops_min" : 194877,
        "iops_max" : 197756,
        "iops_mean" : 196357.916667,
        "iops_stddev" : 748.178065,
        "iops_samples" : 60

formatting related settings worth noticing

--output=filename

Write output to file filename.

--output-format=format

Set the reporting format to normal, terse, json, or json+. Multiple formats can be selected, separated by a comma. terse is a CSV based format. json+ is like json, except it adds a full dump of the latency buckets.

--bandwidth-log

Generate aggregate bandwidth logs.

Measuring latency

Concepts

How are jobs, processes and threads are connected

--max-jobs=nr

Set the maximum number of threads/processes to support to nr. NOTE: On Linux, it may be necessary to increase the shared-memory limit (/proc/sys/kernel/shmmax) if fio runs into errors while creating jobs.

--numjobs=int

Create the specified number of clones of this job. Each clone of job is spawned as an independent thread or process. May be used to setup a larger number of threads/processes doing the same thing. Each thread is reported separately; to see statistics for all clones as a whole, use group_reporting in conjunction with new_group. See --max-jobs. Default: 1.

--runtime=time

Limit runtime. The test will run until it completes the configured I/O workload or until it has run for this specified amount of time, whichever occurs first. It can be quite hard to determine for how long a specified job will run, so this parameter is handy to cap the total runtime to a given time. When the unit is omitted, the value is interpreted in seconds.

--time_based

If set, fio will run for the duration of the runtime specified even if the file(s) are completely read or written. It will simply loop over the same workload as many times as the runtime allows.

ramp_time=time

If set, fio will run the specified workload for this amount of time before logging any performance numbers. Useful for letting performance settle before logging results, thus minimizing the runtime required for stable results. Note that the ramp_time is considered lead in time for a job, thus it will increase the total runtime if a special timeout or runtime is specified. When the unit is omitted, the value is given in seconds.

Clone this wiki locally