Fio is an advanced disk benchmark that depends upon the kernel’s AIO access library.
fio is an application for driving I/O workloads and as implemented in Phoronix, particularly disk I/O. The test itself has a huge combination of options (~8192 total) and gets configured for specific cases. Below are the specific parameters for one of these tests (read) and the other is the same, except it is a sequential write.
Flexible IO Tester 3.1:
pts/fio-1.11.2
Disk Test Configuration
1: Random Read
2: Random Write
3: Sequential Read
4: Sequential Write
5: Test All Options
Type: 3
1: POSIX AIO
2: Sync
3: Linux AIO
4: Windows AIO
5: Test All Options
IO Engine: 3
1: Yes
2: No
3: Test All Options
Buffered: 2
1: No
2: Yes
3: Test All Options
Direct: 2
1: 4KB
2: 8KB
3: 16KB
4: 32KB
5: 64KB
6: 128KB
7: 256KB
8: 512KB
9: 1MB
10: 2MB
11: 4MB
12: 8MB
13: 16MB
14: 32MB
15: 64MB
16: 128MB
17: Test All Options
Block Size: 1
1: Default Test Directory
2: /
3: Test All Options
Disk Target: 1
Metrics (Intel) - phoronix/fiosh - pid 2069 // read On_CPU 0.039 On_Core 0.315 IPC 0.897 Retire 0.545 (54.5%) FrontEnd 0.272 (27.2%) Spec 0.046 (4.6%) Backend 0.137 (13.7%) Elapsed 30.41 Procs 13 Maxrss 255K Minflt 65176 Majflt 0 Inblock 8688600 Oublock 16 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 552665 (100.0%) Nivcsw 26 Utime 1.395253 Stime 8.188394 Start 346053.37 Finish 346083.78 sh - pid 2219 // write On_CPU 0.038 On_Core 0.303 IPC 0.875 Retire 0.528 (52.8%) FrontEnd 0.253 (25.3%) Spec 0.044 (4.4%) Backend 0.175 (17.5%) Elapsed 30.41 Procs 13 Maxrss 255K Minflt 65171 Majflt 0 Inblock 0 Oublock 7020112 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 448375 (100.0%) Nivcsw 34 Utime 1.410236 Stime 7.798510 Start 346311.79 Finish 346342.20
Metrics show several signs this is an I/O bound application: a huge percentage of voluntary context switches, large numbers of blocks read or written and very low On_CPU percentages. As a result, performance for this benchmark is driven mostly by the raw I/O and secondarily with how quickly the OS can “turn around” after context switches to work on the next load.
