Skip to content

Instantly share code, notes, and snippets.

@mdcallag
Created November 19, 2022 17:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mdcallag/34c653b42d091cafa2929ea727e69c53 to your computer and use it in GitHub Desktop.
Save mdcallag/34c653b42d091cafa2929ea727e69c53 to your computer and use it in GitHub Desktop.
Server:
* Explained at http://smalldatum.blogspot.com/2018/12/new-small-servers-for-performance.html
* Intel NUC with 4 cores, hyperthread disabled, 16G RAM
* Samsung 970 EVO
* Ubuntu 22.04, 5.15.0-52-generic kernel
* fio used 8 files, 20G per file for dir and buf
Example command lines, repeated for numjobs in 1 2 4 8 16 32 48 64
raw = no filesystem
fio --filename=/dev/nvme0n1 --direct=1 --rw=randread --bs=4096 --ioengine=psync --iodepth=1 --runtime=600 --numjobs=1 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --eta-interval=1 --randseed=1668657773 --readonly --eta=always
dir = O_DIRECT
fio --filename=/data/m/fio.in.1:/data/m/fio.in.2:/data/m/fio.in.3:/data/m/fio.in.4:/data/m/fio.in.5:/data/m/fio.in.6:/data/m/fio.in.7:/data/m/fio.in.8 --filesize=20480m --rw=randread --bs=4096 --ioengine=psync --iodepth=1 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --eta-interval=1 --randrepeat=0 --norandommap --invalidate=0 --eta=always --direct=1 --numjobs=1 --runtime=600
buf = buffered IO
fio --filename=/data/m/fio.in.1:/data/m/fio.in.2:/data/m/fio.in.3:/data/m/fio.in.4:/data/m/fio.in.5:/data/m/fio.in.6:/data/m/fio.in.7:/data/m/fio.in.8 --filesize=20480m --rw=randread --bs=4096 --ioengine=psync --iodepth=1 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --eta-interval=1 --randrepeat=0 --norandommap --invalidate=0 --eta=always --direct=0 --fadvise_hint=random --numjobs=1 --runtime=600
IOPs per fio
1 2 4 8 16 32 48 64 <- njobs
10244 20295 39348 87902 146326 210911 240833 255861 fio.4kb.raw.psync
9715 19123 38309 86112 143291 207611 237557 252481 fio.4kb.dir.psync
9242 19478 42212 92064 148756 223649 255541 272594 fio.4kb.buf.psync
-
9401 18246 34152 68362 99349 123144 131703 135836 fio.4kb.raw.psync
9116 17612 33060 66826 97391 121228 129733 133908 fio.8kb.dir.psync
8675 17029 36450 71135 105196 131658 141951 146795 fio.8kb.buf.psync
response time per fio - usecs
1 2 4 8 16 32 48 64 <- njobs
95.3 96.1 99.3 90.2 108.5 151.0 198.4 249.5 fio.4kb.raw.psync
100.8 102.2 102.6 92.2 111.0 153.5 201.4 252.9 fio.4kb.dir.psync
105.7 100.8 93.2 86.3 106.8 142.4 187.0 234.1 fio.4kb.buf.psync
-
104.1 106.8 114.6 116.3 160.3 259.2 364.1 470.9 fio.8kb.raw.psync
107.9 111.5 119.2 119.0 163.5 263.3 369.4 477.5 fio.8kb.dir.psync
113.4 115.4 108.4 111.7 151.4 242.4 337.6 435.4 fio.8kb.buf.psync
vmstat us+sy
1 2 4 8 16 32 48 64 <- njobs
4.8 9.2 18.7 12.8 24.6 39.4 46.5 50.5 fio.4kb.raw.psync
5.8 11.3 21.0 14.8 28.8 46.8 54.9 58.2 fio.4kb.dir.psync
7.4 15.1 23.6 22.5 44.4 67.4 80.0 84.2 fio.4kb.buf.psync
-
4.8 9.7 17.5 10.5 17.4 22.8 25.5 25.7 fio.8kb.raw.psync
5.6 11.2 20.0 12.3 21.0 27.6 29.4 31.7 fio.8kb.dir.psync
8.3 17.6 24.0 22.9 37.0 50.9 54.3 57.1 fio.8kb.buf.psync
cpu_usecs per operation
1 2 4 8 16 32 48 64 <- njobs
22.8 22.6 22.3 6.9 7.6 8.1 8.0 8.1 fio.4kb.raw.psync
28.1 28.4 25.1 8.0 8.9 9.4 9.3 9.2 fio.4kb.dir.psync
38.9 36.1 25.3 10.9 13.6 12.1 12.5 12.3 fio.4kb.buf.psync
-
25.2 26.0 24.4 7.3 8.0 8.2 8.5 8.4 fio.8kb.raw.psync
29.2 30.1 28.2 8.6 9.6 9.9 9.9 10.3 fio.8kb.dir.psync
43.1 45.3 28.5 13.7 14.6 16.4 15.9 15.9 fio.8kb.buf.psync
iostat r_await in usecs
1 2 4 8 16 32 48 64 <- njobs
80 80 80 90 100 140 190 240 fio.4kb.raw.psync
80 80 85 90 100 148 190 241 fio.4kb.dir.psync
81 81 81 90 100 140 180 230 fio.4kb.buf.psync
-
90 90 100 110 153 250 360 465 fio.8kb.raw.psync
90 90 100 110 160 260 360 470 fio.8kb.dir.psync
90 90 100 110 150 250 350 452 fio.8kb.buf.psync
iostat reads per query
1 2 4 8 16 32 48 64 <- njobs
~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1 fio.4kb.raw.psync
~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1 fio.4kb.dir.psync
~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1 fio.4kb.buf.psync
-
~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1 fio.8kb.raw.psync
~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1 fio.8kb.dir.psync
~1 ~1 ~1 ~1 ~1 ~1 ~1 ~1 fio.8kb.buf.psync
iostat rareq-sz in KB
1 2 4 8 16 32 48 64 <- njobs
4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 fio.4kb.raw.psync
4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 fio.4kb.dir.psync
4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 fio.4kb.buf.psync
-
8.0 8.0 8.0 8.0 8.0 8.0 8.0 8.0 fio.8kb.raw.psync
8.0 8.0 8.0 8.0 8.0 8.0 8.0 8.0 fio.8kb.dir.psync
7.8 8.0 8.0 8.0 8.0 8.0 8.0 8.0 fio.8kb.buf.psync
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment