How dmohanty640/fio works
fio is an I/O workload generator and benchmark: users define jobs, fio starts worker threads or processes, issues the configured workload through a selected I/O engine, and reports measurements. The graph also captures verification, logging, zoned-device support, and remote client/server operation, which are major product capabilities reflected in the tree and README. The source excerpts are partial, so unsampled subsystem wiring is limited to the documented workflow and clear module responsibilities.
Main entry points: backend.c Worker backend · fio.c CLI entry · ioengines.c Engine dispatch · server.c fio server
Components 19
Workload setup
- CLI entry
fio.c - Job parsing
parse.c - Job options
options.c - Job setup
init.c
I/O execution
- Worker backend
backend.c - I/O requests
io_u.c - Engine dispatch
ioengines.c - Engine interface
ioengines.h - I/O engines
engines - Zoned-device support
zbd.c
Measurement
- Data verification
verify.c - I/O logging
iolog.c - Statistics
stat.c - Results output
printing.c
Remote mode
- fio client
client.c - fio server
server.c
Other components
- fio user
- I/O target
- Remote operator
Connections 20
- fio user → CLI entry: starts jobs
- CLI entry → Job parsing: parses job files
- Job parsing → Job options: sets options
- CLI entry → Job setup: initializes jobs
- Job setup → Worker backend: starts workers
- Worker backend → I/O requests: requests I/O
- I/O requests → Engine dispatch: submits requests
- Engine dispatch → Engine interface: uses interface
- Engine dispatch → I/O engines: dispatches requests
- I/O engines → I/O target: performs I/O
- Worker backend → Data verification: verifies data
- Worker backend → Zoned-device support: manages zones
- Worker backend → I/O logging: records samples
- Worker backend → Statistics: updates statistics
- Statistics → Results output: formats results
- I/O logging → Results output: provides log data
- Remote operator → fio client: configures remote run
- fio client → fio server: sends jobs
- fio server → Worker backend: runs jobs
- fio server → fio client: sends results