Flexible IO Tester

FIO, the Flexible I/O Tester, is an advanced Linux disk benchmark supporting multiple I/O engines and a wealth of options. FIO was written by Jens Axboe for testing of the Linux I/O subsystem and schedulers.

To run this test with the Phoronix Test Suite, the basic command is: phoronix-test-suite benchmark fio.

Project Site

fio.readthedocs.io

Source Repository

github.com

Test Created

6 December 2010

Last Updated

2 December 2023

Test Maintainer

Michael Larabel 

Test Type

Disk

Average Install Time

9 Seconds

Average Run Time

1 Minute, 29 Seconds

Test Dependencies

C/C++ Compiler Toolchain + Linux AIO

Accolades

400k+ Downloads + 10k+ Public Benchmark Results

Supported Platforms


Public Result Uploads *Reported Test Completions **Reported Installs **Test Profile Page Views ***OpenBenchmarking.orgEventsFlexible IO Tester Popularity Statisticspts/fio2010.122011.052011.102012.032012.082013.012013.062013.112014.042014.092015.022015.072015.122016.052016.102017.032017.082018.012018.062018.112019.042019.092020.022020.072020.122021.052021.102022.032022.082023.012023.062023.11600K1200K1800K2400K3000K
* Uploading of benchmark result data to OpenBenchmarking.org is always optional (opt-in) via the Phoronix Test Suite for users wishing to share their results publicly.
** Data based on those opting to upload their test results to OpenBenchmarking.org and users enabling the opt-in anonymous statistics reporting while running benchmarks from an Internet-connected platform.
*** Test profile page view reporting began March 2021.
Data updated weekly as of 17 March 2024.
Random Read25.1%Sequential Read25.4%Sequential Write24.7%Random Write24.8%Type Option PopularityOpenBenchmarking.org
Linux AIO44.7%Sync18.1%IO_uring19.2%POSIX AIO18.0%Engine Option PopularityOpenBenchmarking.org
No58.1%Yes41.9%Buffered Option PopularityOpenBenchmarking.org
Yes55.3%No44.7%Direct Option PopularityOpenBenchmarking.org
64KB7.5%2MB10.2%4KB25.8%512KB5.8%32KB6.6%16KB6.6%1MB8.0%8MB8.8%4MB6.0%8KB6.7%128KB7.9%Block Size Option PopularityOpenBenchmarking.org
/media/system76/980pro10.1%Default Test Directory89.9%Disk Target Option PopularityOpenBenchmarking.org

Revision History

pts/fio-2.1.0   [View Source]   Sat, 02 Dec 2023 06:58:37 GMT
Update against fio 3.36, fix result parser. Fixes: https://github.com/phoronix-test-suite/test-profiles/issues/286

pts/fio-2.0.0   [View Source]   Wed, 26 Jul 2023 20:08:53 GMT
Update against fio 3.35, add num jobs option and other tweaks

pts/fio-1.15.0   [View Source]   Mon, 20 Dec 2021 19:01:59 GMT
Update against fio 3.29 upstream.

pts/fio-1.14.1   [View Source]   Sun, 06 Dec 2020 08:57:28 GMT
Few fixes for prior commit.

pts/fio-1.14.0   [View Source]   Sat, 05 Dec 2020 21:04:49 GMT
Update against FIO 3.25, drop Windows compatibility for now due to lack of builds.

pts/fio-1.13.2   [View Source]   Fri, 24 Apr 2020 18:41:03 GMT
Build fix for GCC 10 default compiler flags.

pts/fio-1.13.1   [View Source]   Fri, 03 Apr 2020 15:19:21 GMT
Fix for alternate directory handling per

pts/fio-1.13.0   [View Source]   Fri, 21 Feb 2020 08:50:41 GMT
Update against fio 3.18, expose io_uring now that it is sufficiently mature.

pts/fio-1.12.1   [View Source]   Sat, 04 Jan 2020 16:21:17 GMT
Updates from https://github.com/phoronix-test-suite/test-profiles/pull/114

pts/fio-1.12.0   [View Source]   Wed, 09 Oct 2019 10:01:30 GMT
Update against fio 3.16 to avoid build problems with the old fio on newer distributions.

pts/fio-1.11.5   [View Source]   Sat, 09 Feb 2019 11:08:30 GMT
Adjustments per https://github.com/phoronix-test-suite/phoronix-test-suite/issues/337

pts/fio-1.11.4   [View Source]   Sat, 01 Dec 2018 08:49:15 GMT
Fix for 1.11.3 as the XML test defintion got malformed.

pts/fio-1.11.3   [View Source]   Sat, 01 Dec 2018 08:32:44 GMT
Fixes for BSD/FreeBSD support - https://github.com/phoronix-test-suite/test-profiles/pull/41

pts/fio-1.11.2   [View Source]   Sat, 07 Apr 2018 20:07:42 GMT
Drop BSD support since it doesn't work cleanly.

pts/fio-1.11.1   [View Source]   Wed, 28 Feb 2018 19:24:40 GMT
Add Windows FIO support.

pts/fio-1.11.0   [View Source]   Wed, 28 Feb 2018 19:13:31 GMT
Now make the move to fio 3.1.

pts/fio-1.10.1   [View Source]   Wed, 28 Feb 2018 19:05:19 GMT
Update to fio 2.18.

pts/fio-1.9.0   [View Source]   Wed, 01 Feb 2017 21:29:55 GMT
Generae both IOPS and MB/s outputs on PTS Git support code.

pts/fio-1.8.2   [View Source]   Fri, 22 May 2015 17:57:53 GMT
Fix for previous 1.8.1 revision with copy-paste fail.

pts/fio-1.8.1   [View Source]   Wed, 20 May 2015 15:17:50 GMT
Support MB/s output template.

pts/fio-1.8.0   [View Source]   Sat, 28 Mar 2015 08:52:20 GMT
Allow direct value to be a user option.

pts/fio-1.7.1   [View Source]   Thu, 06 Nov 2014 16:16:25 GMT
Ensure directory= is in [global]

pts/fio-1.7.0   [View Source]   Wed, 05 Nov 2014 11:10:36 GMT
Update against fio 2.1.13 upstream.

pts/fio-1.6.2   [View Source]   Tue, 21 Oct 2014 13:13:43 GMT
Fix typo in IO Engine options.

pts/fio-1.6.1   [View Source]   Mon, 13 Oct 2014 18:30:34 GMT
Fix result parsing for new version.

pts/fio-1.6.0   [View Source]   Mon, 13 Oct 2014 09:32:21 GMT
Add new options/

pts/fio-1.5.1   [View Source]   Sat, 13 Sep 2014 17:57:55 GMT
DivideResultBy somehow got left off today\'s earlier commit.

pts/fio-1.5.0   [View Source]   Sat, 13 Sep 2014 11:47:58 GMT
Overhaul of FIO test profile... different output results, more robust, etc per customer requests. REQUIRES LATEST PTS-CORE 5311.

pts/fio-1.4.0   [View Source]   Thu, 17 Jul 2014 11:48:14 GMT
Update against fio 2.1.11, add option to test other disks when PTS finds other mount points available.

pts/fio-1.3.2   [View Source]   Fri, 23 May 2014 22:04:31 GMT
Another fix for FIO provided by Eric Caward.

pts/fio-1.3.1   [View Source]   Fri, 23 May 2014 13:44:25 GMT
Fix for fio test execution.

pts/fio-1.3.0   [View Source]   Thu, 22 May 2014 21:34:49 GMT
Update fio test profile against upstream 2.1.9 release.

pts/fio-1.2.0   [View Source]   Sat, 27 Aug 2011 13:51:20 GMT
Update fio upstream to version 1.57.

pts/fio-1.1.0   [View Source]   Mon, 06 Dec 2010 14:47:30 GMT
Initial import into OpenBenchmarking.org

Suites Using This Test

Disk Test Suite


Performance Metrics

Analyze Test Configuration:

Flexible IO Tester 3.36

Type: Sequential Write - Engine: Linux AIO - Direct: Yes - Block Size: 8MB - Job Count: 1 - Disk Target: Default Test Directory

OpenBenchmarking.org metrics for this test profile configuration based on 87 public results since 4 December 2023 with the latest data as of 18 March 2024.

Additional benchmark metrics will come after OpenBenchmarking.org has collected a sufficient data-set.

OpenBenchmarking.orgDistribution Of Public Results - Type: Sequential Write - Engine: Linux AIO - Direct: Yes - Block Size: 8MB - Job Count: 1 - Disk Target: Default Test Directory86 Results Range From 3 To 462 IOPS324456687108129150171192213234255276297318339360381402423444465918273645

Based on OpenBenchmarking.org data, the selected test / test configuration (Flexible IO Tester 3.36 - Type: Sequential Write - Engine: Linux AIO - Direct: Yes - Block Size: 8MB - Job Count: 1 - Disk Target: Default Test Directory) has an average run-time of 18 minutes. By default this test profile is set to run at least 3 times but may increase if the standard deviation exceeds pre-defined defaults or other calculations deem additional runs necessary for greater statistical accuracy of the result.

OpenBenchmarking.orgMinutesTime Required To Complete BenchmarkType: Sequential Write - Engine: Linux AIO - Direct: Yes - Block Size: 8MB - Job Count: 1 - Disk Target: Default Test DirectoryRun-Time612182430Min: 4 / Avg: 16.93 / Max: 27

Based on public OpenBenchmarking.org results, the selected test / test configuration has an average standard deviation of 12%.

OpenBenchmarking.orgPercent, Fewer Is BetterAverage Deviation Between RunsType: Sequential Write - Engine: Linux AIO - Direct: Yes - Block Size: 8MB - Job Count: 1 - Disk Target: Default Test DirectoryDeviation714212835Min: 0 / Avg: 12.03 / Max: 35

Notable Instruction Set Usage

Notable instruction set extensions supported by this test, based on an automatic analysis by the Phoronix Test Suite / OpenBenchmarking.org analytics engine.

Instruction Set
Support
Instructions Detected
SSE 4.2 (SSE4_2)
Used by default on supported hardware.
Found on Intel processors since at least 2010.
Found on AMD processors since Bulldozer (2011).

 
CRC32
Used by default on supported hardware.
Found on Intel processors since Sandy Bridge (2011).
Found on AMD processors since Bulldozer (2011).

 
VZEROUPPER VBROADCASTSD VINSERTF128 VEXTRACTF128 VPERM2F128
Used by default on supported hardware.
Found on Intel processors since Haswell (2013).
Found on AMD processors since Excavator (2016).

 
VPBROADCASTD VPBROADCASTQ VPERMQ VINSERTI128 VPSLLVQ VPSRLVQ VEXTRACTI128 VPGATHERDD VPBROADCASTW VPBROADCASTB VPERM2I128 VPERMPD VPBLENDD
Advanced Vector Extensions 512 (AVX512)
Used by default on supported hardware.
 
(ZMM REGISTER USE)
FMA (FMA)
Used by default on supported hardware.
Found on Intel processors since Haswell (2013).
Found on AMD processors since Bulldozer (2011).

 
VFMADD132SD VFMADD231SD VFMADD132PD VFMADD213SD
The test / benchmark does honor compiler flag changes.
Last automated analysis: 24 December 2023

This test profile binary relies on the shared libraries libtcmalloc.so.4, libnuma.so.1, libz.so.1, libm.so.6, libmvec.so.1, libaio.so.1, libcurl.so.4, libcrypto.so.3, libc.so.6, libunwind.so.8, libnghttp2.so.14, libidn2.so.0, librtmp.so.1, libssh.so.4, libpsl.so.5, libssl.so.3, libldap-2.5.so.0, liblber-2.5.so.0, libzstd.so.1, libbrotlidec.so.1, liblzma.so.5, libunistring.so.2, libgnutls.so.30, libhogweed.so.6, libnettle.so.8, libgmp.so.10, libkrb5.so.3, libk5crypto.so.3, libkrb5support.so.0, libsasl2.so.2, libbrotlicommon.so.1, libp11-kit.so.0, libtasn1.so.6, libkeyutils.so.1, libresolv.so.2, libffi.so.8.

Tested CPU Architectures

This benchmark has been successfully tested on the below mentioned architectures. The CPU architectures listed is where successful OpenBenchmarking.org result uploads occurred, namely for helping to determine if a given test is compatible with various alternative CPU architectures.

CPU Architecture
Kernel Identifier
Verified On
Intel / AMD x86 64-bit
x86_64
(Many Processors)
ARMv8 64-bit
aarch64
ARMv8 Cortex-A53 4-Core, ARMv8 Cortex-A57 4-Core, ARMv8 Cortex-A72 4-Core, ARMv8 Cortex-A78E 12-Core, ARMv8 Cortex-A78E 6-Core, ARMv8 Cortex-A78E 8-Core, ARMv8 rev 0 6-Core

Recent Test Results

OpenBenchmarking.org Results Compare

1 System - 28 Benchmark Results

2 x AMD Ryzen 7 5800X 8-Core - QEMU Standard PC - Intel 82G33

Debian 12 - 6.1.0-18-amd64 - GNOME Shell 43.9

1 System - 6 Benchmark Results

2 x AMD Ryzen 7 5800X 8-Core - QEMU Standard PC - Intel 82G33

Debian 12 - 6.1.0-18-amd64 - GNOME Shell 43.9

2 Systems - 70 Benchmark Results

3 x Intel Core i5-6600 - QEMU Standard PC - Intel 82G33

Debian 12 - 6.1.0-18-amd64 - GCC 12.2.0

1 System - 8 Benchmark Results

Intel Core - QEMU Standard PC - Intel 440FX 82441FX PMC

Debian 12 - 6.1.0-18-amd64 - GNOME Shell 43.9

2 Systems - 298 Benchmark Results

Intel Core i7-8700 - ASUS PRIME Z370-P II - 32GB ddr4-3200

Ubuntu 23.10 - 6.5.0-15-generic - KDE Plasma 5.27.8

3 Systems - 298 Benchmark Results

Intel Core i7-8700 - ASUS PRIME Z370-P II - 32GB ddr4-3200

Ubuntu 23.10 - 6.5.0-15-generic - KDE Plasma 5.27.8

7 Systems - 39 Benchmark Results

Intel Core i5-6600 - 4096MB - 20GB

Debian 12 - 6.1.0 - GCC 12.2.0

2 Systems - 4 Benchmark Results

ARMv8 rev 0 - EDK II r35.3.1-63e71c9-dirty - 8GB

Ubuntu 20.04 - 5.10.104-tegra - X Server 1.20.13

1 System - 4 Benchmark Results

ARMv8 rev 0 - EDK II r35.3.1-63e71c9-dirty - 8GB

Ubuntu 20.04 - 5.10.104-tegra - X Server 1.20.13

1 System - 68 Benchmark Results

Intel Core i7-8665U - Dell 0PD9KD - Intel Cannon Point-LP

Debian - 6.6.15-amd64 - KDE Plasma 5.27.10

1 System - 30 Benchmark Results

Intel 0000% - ASUS Pro WS W790E-SAGE SE - Intel Alder Lake-S PCH

Fedora 39 - 6.6.11-200.fc39.x86_64 - OpenCL 1.2 Intel FPGA SDK for OpenCL 20.3 + OpenCL 3.0 LINUX + OpenCL 1.2 Intel FPGA SDK for OpenCL 20.3

Most Popular Test Results

OpenBenchmarking.org Results Compare

2 Systems - 8 Benchmark Results

ARMv8 rev 0 - EDK II r35.3.1-63e71c9-dirty - 16GB

Ubuntu 20.04 - 5.10.104-tegra - X Server 1.20.13

6 Systems - 29 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 16GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

5 Systems - 29 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 16GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

4 Systems - 21 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 16GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

2 Systems - 8 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 16GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

3 Systems - 16 Benchmark Results

ARMv8 Cortex-A78E - EDK II r35.3.1-63e71c9-dirty - 16GB

Ubuntu 20.04 - 5.10.104-tegra - X Server

4 Systems - 16 Benchmark Results

ARMv8 rev 0 - EDK II r35.3.1-63e71c9-dirty - 16GB

Ubuntu 20.04 - 5.10.104-tegra - X Server 1.20.13

4 Systems - 16 Benchmark Results

ARMv8 rev 0 - EDK II r35.3.1-63e71c9-dirty - 8GB

Ubuntu 20.04 - 5.10.104-tegra - X Server 1.20.13

3 Systems - 4 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 8GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

4 Systems - 4 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 8GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

5 Systems - 16 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 16GB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

2 Systems - 4 Benchmark Results

ARMv8 Cortex-A78E - EDK II 4.1-33958178 - 3584MB

Ubuntu 20.04 - 5.10.120-tegra - GNOME Shell 3.36.9

Find More Test Results