Skip to main content

Flexible IO Tester (FIO)

FIO, or flexible I/O, is a third party tool that simulates a given I/O workload. It allows us to quickly define and run workloads, and reports a variety of metrics about each run. This allows us to compare results under different conditions, such as different hardware and firmware configurations, with workloads that reflect production workloads.

The workload enables the ability to test various I/O scenarios that represent real-life usage patterns on computer systems. For example, it enables testing sequential read and write operations as well as random read and write operations. It also enables the ability to test single-threaded vs. multi-threaded I/O operations as well as the ability to control I/O queue depths and whether hardware caches should be used.

What is Being Measured?

The FIO workload measures disk I/O performance focusing on throughput, bandwidth, latencies and data integrity/reliability.

Workload Metrics

The following metrics are examples of those captured by the Virtual Client when running the FIO workload. This set of metrics will be captured for each one of the distinct scenarios that are part of the profile (e.g. Random Write 4k block size, Random Read 4k block size). It is a lot of data!!

Metric NameExample Value (min)Example Value (max)Example Value (avg)UnitDescription
h000000_0020.00.00.0Histogram. The percentage of I/O operations with a latency under 2 microseconds.
h000000_0040.00.00.0Histogram. The percentage of I/O operations with a latency between 2 and 4 microseconds.
h000000_0100.00.00.0Histogram. The percentage of I/O operations with a latency between 4 and 10 microseconds.
h000000_0200.00.00.0Histogram. The percentage of I/O operations with a latency between 10 and 20 microseconds.
h000000_0500.00.00.0Histogram. The percentage of I/O operations with a latency between 20 and 50 microseconds.
h000000_1000.00.00.0Histogram. The percentage of I/O operations with a latency between 50 and 100 microseconds.
h000000_2500.00.00.0Histogram. The percentage of I/O operations with a latency between 100 and 250 microseconds.
h000000_5000.00.00.0Histogram. The percentage of I/O operations with a latency between 250 and 500 microseconds.
h000000_7500.00.00.0Histogram. The percentage of I/O operations with a latency between 500 and 750 microseconds.
h000001_0000.00.00.0Histogram. The percentage of I/O operations with a latency between 750 and 1000 microseconds.
h000002_0000.00.00.0Histogram. The percentage of I/O operations with a latency between 1 and 2 milliseconds.
h000004_0000.00.010.0022222222222222224Histogram. The percentage of I/O operations with a latency between 2 and 4 milliseconds.
h000010_0000.00.010.0044444444444444448Histogram. The percentage of I/O operations with a latency between 4 and 10 milliseconds.
h000020_0000.00.0867330.02304311111111111Histogram. The percentage of I/O operations with a latency between 10 and 20 milliseconds.
h000050_0000.00.1531910.09191677777777778Histogram. The percentage of I/O operations with a latency between 20 and 50 milliseconds.
h000100_0000.08.3807345.972690111111111Histogram. The percentage of I/O operations with a latency between 50 and 100 milliseconds.
h000250_0000.094.7048782.81543544444445Histogram. The percentage of I/O operations with a latency between 100 and 250 milliseconds.
h000500_0000.010.0524390.025846333333333337Histogram. The percentage of I/O operations with a latency between 250 and 500 milliseconds.
h000750_0000.00.0171350.001903888888888889Histogram. The percentage of I/O operations with a latency between 500 and 750 milliseconds.
h001000_0000.00.1782070.019800777777777779Histogram. The percentage of I/O operations with a latency between 750 and 1000 milliseconds.
h002000_0000.00.3804040.04337822222222223Histogram. The percentage of I/O operations with a latency between 1000 and 2000 milliseconds.
hgt002000_0000.0100.2570311.145678444444444Histogram. The percentage of I/O operations with a latency greater than 2000 milliseconds.
read_bandwidth15702.0200667.058223.333333333336kilobytes/secThe average I/O bandwidth for read operations.
read_bandwidth_max18084.0462848.092574.55555555556kilobytes/secThe maximum I/O bandwidth for read operations.
read_bandwidth_mean15713.569282199244.07166758125.17605344445kilobytes/secThe mean I/O bandwidth for read operations.
read_bandwidth_min2560.061242.030026.88888888889kilobytes/secThe minimum I/O bandwidth for read operations.
read_bandwidth_stdev546.74565246.9660318616.168045111111kilobytes/secThe standard deviation for I/O bandwidth with read operations.
read_bytes4824506368.061730717696.017896966371.555559The total number of bytes associated with read I/O operations.
read_completionlatency_max262.4105116124.1865731333.7768344444444millisecondsThe maximum latency for the completion of I/O operations after having submitted them to the kernel for processing.
read_completionlatency_mean125.074464516838992619.6481831650137403.9226721458616millisecondsThe mean latency for the completion of I/O operations after having submitted them to the kernel for processing.
read_completionlatency_min3.221285408.3895109999999953.09218088888888millisecondsThe minimum latency for the completion of I/O operations after having submitted them to the kernel for processing.
read_completionlatency_p50125.304831999999992634.022912408.30384355555557millisecondsThe 50th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 50% of all I/O operations will be less than or equal to this value.
read_completionlatency_p70139.4606082667.577344422.2266026666666millisecondsThe 70th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 70% of all I/O operations will be less than or equal to this value.
read_completionlatency_p90158.334975999999992835.349504456.4800853333333millisecondsThe 90th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 90% of all I/O operations will be less than or equal to this value.
read_completionlatency_p99162.529283036.6760959999999484.44211199999998millisecondsThe 99th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 99% of all I/O operations will be less than or equal to this value.
read_completionlatency_p99_99204.472324043.30905599999981035.294037333333millisecondsThe 99.99th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 99.99% of all I/O operations will be less than or equal to this value.
read_completionlatency_stdev23.898507489954999202.77576240538250.63621908119244millisecondsThe standard deviation for all completion latency measurements with read operations.
read_iops194.2599794079.716283599.6289853333335The average number of read operations per second.
read_iops_max452.05092.04171.777777777777The maximum number of read operations per second.
read_iops_mean194.5254084.4908183607.9053463333336The mean number of read operations per second.
read_iops_min12.03827.02786.777777777778The minimum number of read operations per second.
read_iops_stdev34.754818220.536425147.02484755555555The standard deviation for the number of read operations per second.
read_ios58359.01223974.01080003.7777777778The total number of read input/output operations.
read_ios_dropped0.00.00.0The total number of read dropped input/output operations.
read_ios_short0.00.00.0The total number of short read input/output operations.
read_latency_max262.4171116124.19517399999991333.7924684444445millisecondsThe maximum latency for read operations.
read_latency_mean125.315625953464992624.783958116883404.7109877959043millisecondsThe mean latency for read operations.
read_latency_min3.808972433.7743559999999865.96513266666665millisecondsThe minimum latency for read operations.
read_latency_stdev23.907676450169999202.9171408858750.65698046006966millisecondsThe standard deviation of latency measurements for read operations.
read_submissionlatency_max62.8799292041.5335309999999406.41720799999998millisecondsThe maximum latency for submitting I/Os to the kernel for processing.
read_submissionlatency_mean0.240926670475.1354863668950.7880644981962222millisecondsThe mean latency for submitting I/Os to the kernel for processing.
read_submissionlatency_min0.00330.0319020.006789111111111111millisecondsThe minimum latency for submitting I/Os to the kernel for processing.
read_submissionlatency_stdev2.93444301555826.5605669224695.744825794949667millisecondsThe standard deviation of latencies for submitting I/Os to the kernel for processing.
write_bandwidth15702.0200667.058223.333333333336kilobytes/secThe average I/O bandwidth for write operations.
write_bandwidth_max18084.0462848.092574.55555555556kilobytes/secThe maximum I/O bandwidth for write operations.
write_bandwidth_mean15713.569282199244.07166758125.17605344445kilobytes/secThe mean I/O bandwidth for write operations.
write_bandwidth_min2560.061242.030026.88888888889kilobytes/secThe minimum I/O bandwidth for write operations.
write_bandwidth_stdev546.74565246.9660318616.168045111111kilobytes/secThe standard deviation for I/O bandwidth with write operations.
write_bytes4824506368.061730717696.017896966371.555559The total number of bytes associated with write I/O operations.
write_completionlatency_max262.4105116124.1865731333.7768344444444millisecondsThe maximum latency for the completion of I/O operations after having submitted them to the kernel for processing.
write_completionlatency_mean125.074464516838992619.6481831650137403.9226721458616millisecondsThe mean latency for the completion of I/O operations after having submitted them to the kernel for processing.
write_completionlatency_min3.221285408.3895109999999953.09218088888888millisecondsThe minimum latency for the completion of I/O operations after having submitted them to the kernel for processing.
write_completionlatency_p50125.304831999999992634.022912408.30384355555557millisecondsThe 50th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 50% of all I/O operations will be less than or equal to this value.
write_completionlatency_p70139.4606082667.577344422.2266026666666millisecondsThe 70th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 70% of all I/O operations will be less than or equal to this value.
write_completionlatency_p90158.334975999999992835.349504456.4800853333333millisecondsThe 90th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 90% of all I/O operations will be less than or equal to this value.
write_completionlatency_p99162.529283036.6760959999999484.44211199999998millisecondsThe 99th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 99% of all I/O operations will be less than or equal to this value.
write_completionlatency_p99_99204.472324043.30905599999981035.294037333333millisecondsThe 99.99th percentile latency for the completion of I/O operations after having submitted them to the kernel for processing. 99.99% of all I/O operations will be less than or equal to this value.
write_completionlatency_stdev23.898507489954999202.77576240538250.63621908119244millisecondsThe standard deviation for all completion latency measurements with write operations.
write_iops194.2599794079.716283599.6289853333335The average number of write operations per second.
write_iops_max452.05092.04171.777777777777The maximum number of write operations per second.
write_iops_mean194.5254084.4908183607.9053463333336The mean number of write operations per second.
write_iops_min12.03827.02786.777777777778The minimum number of write operations per second.
write_iops_stdev34.754818220.536425147.02484755555555The standard deviation for the number of write operations per second.
write_ios58359.01223974.01080003.7777777778The total number of write input/output operations.
write_ios_dropped0.00.00.0The total number of write dropped input/output operations.
write_ios_short0.00.00.0The total number of short write input/output operations.
write_latency_max262.4171116124.19517399999991333.7924684444445millisecondsThe maximum latency for write operations.
write_latency_mean125.315625953464992624.783958116883404.7109877959043millisecondsThe mean latency for write operations.
write_latency_min3.808972433.7743559999999865.96513266666665millisecondsThe minimum latency for write operations.
write_latency_stdev23.907676450169999202.9171408858750.65698046006966millisecondsThe standard deviation of latency measurements for write operations.
write_submissionlatency_max62.8799292041.5335309999999406.41720799999998millisecondsThe maximum latency for submitting I/Os to the kernel for processing.
write_submissionlatency_mean0.240926670475.1354863668950.7880644981962222millisecondsThe mean latency for submitting I/Os to the kernel for processing.
write_submissionlatency_min0.00330.0319020.006789111111111111millisecondsThe minimum latency for submitting I/Os to the kernel for processing.
write_submissionlatency_stdev2.93444301555826.5605669224695.744825794949667millisecondsThe standard deviation of latencies for submitting I/Os to the kernel for processing.

Additional Resources