# axboe/fio

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/axboe-fio).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

6,268 stars · 1,413 forks · C · GPL-2.0

## Links

- GitHub: https://github.com/axboe/fio
- awesome-repositories: https://awesome-repositories.com/repository/axboe-fio.md

## Description

fio is a storage performance benchmarking tool and synthetic I/O workload generator. It functions as a storage device profiler and I/O trace replay engine, enabling the measurement of throughput and latency for storage devices and file systems.

The project is distinguished by its ability to act as a distributed storage stress tester, managing multiple remote server backends via a single controller to evaluate network storage. It also includes specialized capabilities for storage deduplication analysis by generating redundant data buffers to test the efficiency of deduplication subsystems.

The tool covers a broad range of capabilities, including the simulation of complex I/O workloads with controllable block sizes and I/O depth, the analysis of CPU idleness, and the collection of device statistics. It provides observability through performance metric visualization, latency histograms, and steady-state monitoring.

Workloads can be triggered via command line arguments or detailed configuration files to automate complex benchmarking scenarios.

## Tags

### Operating Systems & Systems Programming

- [Disk I/O Benchmarking](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-i-o-benchmarking.md) — The Distributed I/O Stress Tester measures storage throughput and latency by running configurable job files or command line parameters. ([source](https://github.com/axboe/fio#readme))
- [Block Size Specifications](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-block-i-o/block-size-specifications.md) — The Distributed I/O Stress Tester sets fixed or ranged block sizes for I/O units and allows weighted distribution of sizes within a workload. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [High Performance I/O Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/high-performance-i-o-engines.md) — Provides a common API abstraction layer to support diverse I/O engines and various operating systems.
- [I/O Trace Replay Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/i-o-trace-replay-engines.md) — Reproduces real-world storage traffic by replaying recorded block-level I/O logs against a device.
- [CPU Core Timing Offloading](https://awesome-repositories.com/f/operating-systems-systems-programming/cpu-core-timing-offloading.md) — Offloads clock updates to a dedicated core to minimize timing overhead and maximize measurement accuracy.
- [Buffer Pattern Generation](https://awesome-repositories.com/f/operating-systems-systems-programming/file-i-o-management/buffer-pattern-generation.md) — Fills buffers with patterns or random data and controls deduplication levels to test storage efficiency. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [I/O Trace Analysis](https://awesome-repositories.com/f/operating-systems-systems-programming/i-o-trace-analysis.md) — Reads and merges block-level I/O trace files to verify storage performance against device behavior. ([source](https://github.com/axboe/fio/blob/master/blktrace.h))
- [File System Access Patterns](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-system-access-patterns.md) — The Distributed I/O Stress Tester informs the operating system about intended access patterns of a file to improve read-ahead and caching behavior. ([source](https://github.com/axboe/fio/blob/master/helpers.h))

### Testing & Quality Assurance

- [Storage Performance Benchmarking](https://awesome-repositories.com/f/testing-quality-assurance/comparative-performance-benchmarking/storage-performance-benchmarking.md) — Executes controlled read and write workloads to measure throughput and latency for storage devices and file systems.
- [Synthetic I/O Workload Generators](https://awesome-repositories.com/f/testing-quality-assurance/synthetic-i-o-workload-generators.md) — Provides a framework for simulating complex storage patterns including random reads, writes, and data deduplication scenarios.
- [Distributed Storage Testing](https://awesome-repositories.com/f/testing-quality-assurance/comparative-performance-benchmarking/distributed-storage-testing.md) — Runs coordinated performance benchmarks across multiple remote servers using a single controller to evaluate network storage.
- [Configurable I/O Workloads](https://awesome-repositories.com/f/testing-quality-assurance/configurable-i-o-workloads.md) — Runs storage tests based on workload specifications defined in configuration files or command line arguments. ([source](https://github.com/axboe/fio#readme))
- [I/O Access Pattern Simulation](https://awesome-repositories.com/f/testing-quality-assurance/i-o-access-pattern-simulation.md) — The Distributed I/O Stress Tester selects which file to service next using strategies such as uniform random, round-robin, or sequential distributions. ([source](https://github.com/axboe/fio/blob/master/file.h))
- [Queue Depth Control](https://awesome-repositories.com/f/testing-quality-assurance/i-o-flow-control/queue-depth-control.md) — The Distributed I/O Stress Tester manages the number of I/O units kept in flight and defines batch limits to test queue performance. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [I/O Job Specifications](https://awesome-repositories.com/f/testing-quality-assurance/i-o-job-specifications.md) — Uses job files to specify global and thread-specific parameters required to simulate a complex I/O load. ([source](https://github.com/axboe/fio#readme))
- [I/O Trace Replay](https://awesome-repositories.com/f/testing-quality-assurance/i-o-trace-replay.md) — Provides an I/O trace replay engine to reproduce real-world storage traffic from recorded logs. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [Workload Stress Testers](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/execution-and-infrastructure/automated-test-generators/stress-testing/workload-stress-testers.md) — Triggers complex synthetic I/O workloads and stress tests using direct command line arguments. ([source](https://github.com/axboe/fio/blob/master/README.rst))
- [Steady State Detection](https://awesome-repositories.com/f/testing-quality-assurance/steady-state-detection.md) — Tracks performance over a rolling window and terminates the job once IOPS or latency stabilizes. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [Storage Deduplication Simulation](https://awesome-repositories.com/f/testing-quality-assurance/storage-deduplication-simulation.md) — Generates unique data buffers and repeats them across a workload to test how systems handle redundant data. ([source](https://github.com/axboe/fio/blob/master/dedupe.c))
- [Synthetic I/O Workload Generation](https://awesome-repositories.com/f/testing-quality-assurance/synthetic-i-o-workload-generation.md) — Generates synthetic random or sequential data patterns to test how storage hardware handles specific traffic profiles.
- [System Performance Benchmarking Tools](https://awesome-repositories.com/f/testing-quality-assurance/system-performance-benchmarking-tools.md) — Measures the throughput and latency of storage devices and file systems using synthetic workloads.
- [Distributed Benchmark Suites](https://awesome-repositories.com/f/testing-quality-assurance/test-and-benchmark-execution/distributed-benchmark-suites.md) — Manages a controller client that orchestrates multiple server backends to execute benchmarks across remote machines. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [Batch Workload Execution](https://awesome-repositories.com/f/testing-quality-assurance/batch-workload-execution.md) — Runs multiple performance tests in sequence by processing a series of job definitions from a file. ([source](https://github.com/axboe/fio#readme))
- [Physical Data Placement Mapping](https://awesome-repositories.com/f/testing-quality-assurance/comparative-performance-benchmarking/distributed-storage-testing/physical-data-placement-mapping.md) — The Distributed I/O Stress Tester maps data to physical storage locations using stream IDs or predefined schemes to benchmark specialized drives. ([source](https://github.com/axboe/fio/blob/master/dataplacement.c))
- [Warm-up Period Management](https://awesome-repositories.com/f/testing-quality-assurance/configurable-i-o-workloads/warm-up-period-management.md) — The Distributed I/O Stress Tester controls the initial ramp-up phase of a workload to ensure measurements occur only after reaching a steady state. ([source](https://github.com/axboe/fio/blob/master/fio_time.h))
- [System Idle Time Measurement](https://awesome-repositories.com/f/testing-quality-assurance/cpu-time-profiling/system-idle-time-measurement.md) — Calculates the time required to complete units of work across multiple CPUs to profile system idle time. ([source](https://github.com/axboe/fio/blob/master/idletime.c))
- [Data Integrity Checksums](https://awesome-repositories.com/f/testing-quality-assurance/data-integrity-checksums.md) — Writes checksums or patterns to blocks and verifies them during reads to ensure data has not been corrupted. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [Data Placement Strategy Testing](https://awesome-repositories.com/f/testing-quality-assurance/data-placement-strategy-testing.md) — The Distributed I/O Stress Tester determines which placement identifier to use for I/O operations using random, round-robin, or scheme-based selection. ([source](https://github.com/axboe/fio/blob/master/dataplacement.h))
- [I/O Flow Control](https://awesome-repositories.com/f/testing-quality-assurance/i-o-flow-control.md) — The Distributed I/O Stress Tester regulates the volume of data moving through a job by monitoring thresholds and weights to prevent saturation. ([source](https://github.com/axboe/fio/blob/master/flow.h))
- [Performance Metric Exports](https://awesome-repositories.com/f/testing-quality-assurance/performance-testing-analysis/performance-diagnostics/result-sharing/performance-metric-exports.md) — Outputs results in human-readable, JSON, or semicolon-separated formats including latency histograms and bandwidth logs. ([source](https://github.com/axboe/fio/blob/master/fio.1))
- [Flow Throttling](https://awesome-repositories.com/f/testing-quality-assurance/synthetic-i-o-workload-generation/flow-throttling.md) — The Distributed I/O Stress Tester stalls threads or processes based on a weight-to-counter ratio to maintain a proportional distribution of IO. ([source](https://github.com/axboe/fio/blob/master/flow.c))

### Networking & Communication

- [Distributed Socket Execution](https://awesome-repositories.com/f/networking-communication/distributed-socket-execution.md) — Manages remote benchmarking clients via network sockets to execute coordinated workloads across multiple machines.
- [Remote Socket Management](https://awesome-repositories.com/f/networking-communication/multi-cluster-service-connectivity/disconnection-management/connection-lifecycle-handlers/socket-client-lifecycle-event-handlers/remote-socket-management.md) — Controls the connectivity and execution of remote test clients across a cluster using network sockets. ([source](https://github.com/axboe/fio/blob/master/client.h))

### System Administration & Monitoring

- [Disk I/O Performance Analysis](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring-tools/performance-tuning/disk-i-o-performance-analysis.md) — Tracks I/O operations and sector counts by reading system block statistics to evaluate storage performance. ([source](https://github.com/axboe/fio/blob/master/diskutil.h))
- [Storage Device Profilers](https://awesome-repositories.com/f/system-administration-monitoring/storage-device-profilers.md) — Analyzes disk utilization and identifies performance bottlenecks through detailed latency histograms and bandwidth logs.
- [System Statistics Collection](https://awesome-repositories.com/f/system-administration-monitoring/system-statistics-collection.md) — Reads system-level storage metrics such as IO ticks and queue time to track device performance. ([source](https://github.com/axboe/fio/blob/master/diskutil.c))
- [CPU Idleness Analysis](https://awesome-repositories.com/f/system-administration-monitoring/cpu-idleness-analysis.md) — Measures CPU overhead by running idle-priority threads to derive the actual idleness of each processor. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [CPU Idleness Tracking](https://awesome-repositories.com/f/system-administration-monitoring/cpu-idleness-tracking.md) — Tracks the time CPUs spend idle during execution to differentiate between storage latency and system inactivity. ([source](https://github.com/axboe/fio/blob/master/idletime.h))
- [Rolling Window Analysis](https://awesome-repositories.com/f/system-administration-monitoring/health-monitoring/rolling-window-analysis.md) — Monitors IOPS and latency over a moving time window to detect when the storage device reaches a steady state.
- [Metric and Performance Monitors](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors.md) — Generates graphical representations of storage data using axes and labels to analyze benchmark results. ([source](https://github.com/axboe/fio/blob/master/gfio.h))
- [Performance Visualization](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors/performance-visualization.md) — Generates bar and line graphs from collected data using custom labels and scaling to represent metrics. ([source](https://github.com/axboe/fio/blob/master/graph.h))

### Data & Databases

- [Storage Deduplication](https://awesome-repositories.com/f/data-databases/block-storage/storage-deduplication.md) — Generates redundant data buffers to test the efficiency and performance of storage deduplication subsystems.
- [I/O Rate Limiting](https://awesome-repositories.com/f/data-databases/i-o-rate-limiting.md) — The Distributed I/O Stress Tester caps the maximum bandwidth or IOPS and exits the job if minimum performance thresholds are not met. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [Resource Group Constraints](https://awesome-repositories.com/f/data-databases/i-o-rate-limiting/resource-group-constraints.md) — The Distributed I/O Stress Tester assigns threads to specific control groups to constrain or prioritize disk I/O performance during benchmarks. ([source](https://github.com/axboe/fio/blob/master/cgroup.c))
- [Performance Metric Aggregators](https://awesome-repositories.com/f/data-databases/real-time-data-aggregators/performance-metric-aggregators.md) — The Distributed I/O Stress Tester combines output from multiple connections into a single report to simplify analysis across grouped workloads. ([source](https://github.com/axboe/fio/blob/master/SERVER-TODO))

### Development Tools & Productivity

- [Benchmark Thread Synchronization](https://awesome-repositories.com/f/development-tools-productivity/synchronous-execution-controls/benchmark-thread-synchronization.md) — Coordinates execution between threads using semaphores to ensure accurate parallel measurement of storage performance. ([source](https://github.com/axboe/fio/blob/master/fio_sem.h))

### DevOps & Infrastructure

- [Automation Job Coordination](https://awesome-repositories.com/f/devops-infrastructure/automation-job-coordination.md) — Schedules jobs using start delays and runtime caps to ensure tasks finish in a specific, coordinated order. ([source](https://github.com/axboe/fio/blob/master/HOWTO.rst))
- [Configuration File Loading](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/file-based-configuration/configuration-file-loading.md) — Provides mechanisms to load and parse complex benchmark configurations from external files or standard input. ([source](https://github.com/axboe/fio/blob/master/README.rst))

### Programming Languages & Runtimes

- [Deduplication Data Generators](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/core-conceptual-frameworks/programming-language-concepts/random-number-generation/random-number-generators/random-data-generators/test-data-generators/deduplication-data-generators.md) — Generates repeatable data buffers with specific deduplication levels to test storage compression and efficiency.

### Software Engineering & Architecture

- [Precision Benchmarking Timers](https://awesome-repositories.com/f/software-engineering-architecture/execution-time-measurements/precision-benchmarking-timers.md) — The Distributed I/O Stress Tester tracks elapsed time using the most precise available clock source to ensure accurate performance benchmarking. ([source](https://github.com/axboe/fio/blob/master/fio_time.h))

### Part of an Awesome List

- [Network Testing](https://awesome-repositories.com/f/awesome-lists/devtools/network-testing.md) — Flexible I/O tester for storage performance.
