Description - phoronix/fio

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/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.