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: 1Metrics (Intel) - phoronix/fio
sh - 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.