Tests with fio ============== The fio tool has been run for performance tests on the original and modified kernels in sequential (rw) and random read/write (randrw) on all cache modes available (writethrough, writeback, writearound, none). Summary: no regressions observed, same IOPS and BW metrics, run three times (test1, test2, test3) on 'orig' and 'test'. # fio \ --name=test \ --filename=/dev/bcache0 \ --runtime=180s \ --ioengine=libaio \ --rw=$RW_MODE \ --bs=4k \ --iodepth=16 \ --numjobs=8 \ --group_reporting (attached script: 'test-bcache-cache-modes.fio.sh') Details: ------- The bcache device is made of - caching device: 100 GB partition in NVMe drive - backing device: 1 TB partition in SCSI disk $ dpkg -s fio | grep Version: Version: 3.1-1 # grep -e read: -e write: fio.test*/fio.*/fio.test.*.log | sed 's,/fio, fio,g' | sort -s -k4,4 -k3,3 -k2,2 fio.test1 fio.orig fio.test.none.randrw.log: read: IOPS=79, BW=318KiB/s (325kB/s)(55.9MiB/180092msec) fio.test2 fio.orig fio.test.none.randrw.log: read: IOPS=81, BW=328KiB/s (336kB/s)(57.7MiB/180137msec) fio.test3 fio.orig fio.test.none.randrw.log: read: IOPS=80, BW=324KiB/s (331kB/s)(56.9MiB/180142msec) fio.test1 fio.test fio.test.none.randrw.log: read: IOPS=81, BW=326KiB/s (334kB/s)(57.4MiB/180222msec) fio.test2 fio.test fio.test.none.randrw.log: read: IOPS=80, BW=324KiB/s (331kB/s)(56.0MiB/180177msec) fio.test3 fio.test fio.test.none.randrw.log: read: IOPS=77, BW=312KiB/s (319kB/s)(54.8MiB/180103msec) fio.test1 fio.orig fio.test.none.rw.log: read: IOPS=81.8k, BW=319MiB/s (335MB/s)(56.2GiB/180023msec) fio.test2 fio.orig fio.test.none.rw.log: read: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180070msec) fio.test3 fio.orig fio.test.none.rw.log: read: IOPS=82.8k, BW=323MiB/s (339MB/s)(56.9GiB/180006msec) fio.test1 fio.test fio.test.none.rw.log: read: IOPS=83.2k, BW=325MiB/s (341MB/s)(57.1GiB/180035msec) fio.test2 fio.test fio.test.none.rw.log: read: IOPS=85.2k, BW=333MiB/s (349MB/s)(58.5GiB/180030msec) fio.test3 fio.test fio.test.none.rw.log: read: IOPS=82.9k, BW=324MiB/s (339MB/s)(56.9GiB/180003msec) fio.test1 fio.orig fio.test.writearound.randrw.log: read: IOPS=78, BW=315KiB/s (322kB/s)(55.3MiB/180123msec) fio.test2 fio.orig fio.test.writearound.randrw.log: read: IOPS=78, BW=313KiB/s (321kB/s)(55.1MiB/180114msec) fio.test3 fio.orig fio.test.writearound.randrw.log: read: IOPS=81, BW=325KiB/s (333kB/s)(57.2MiB/180108msec) fio.test1 fio.test fio.test.writearound.randrw.log: read: IOPS=81, BW=324KiB/s (332kB/s)(57.0MiB/180107msec) fio.test2 fio.test fio.test.writearound.randrw.log: read: IOPS=78, BW=315KiB/s (323kB/s)(55.4MiB/180069msec) fio.test3 fio.test fio.test.writearound.randrw.log: read: IOPS=78, BW=312KiB/s (320kB/s)(54.9MiB/180109msec) fio.test1 fio.orig fio.test.writearound.rw.log: read: IOPS=81.8k, BW=319MiB/s (335MB/s)(56.2GiB/180046msec) fio.test2 fio.orig fio.test.writearound.rw.log: read: IOPS=81.6k, BW=319MiB/s (334MB/s)(56.0GiB/180004msec) fio.test3 fio.orig fio.test.writearound.rw.log: read: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180002msec) fio.test1 fio.test fio.test.writearound.rw.log: read: IOPS=82.8k, BW=323MiB/s (339MB/s)(56.9GiB/180097msec) fio.test2 fio.test fio.test.writearound.rw.log: read: IOPS=79.6k, BW=311MiB/s (326MB/s)(54.6GiB/180003msec) fio.test3 fio.test fio.test.writearound.rw.log: read: IOPS=81.7k, BW=319MiB/s (335MB/s)(56.1GiB/180056msec) fio.test1 fio.orig fio.test.writeback.randrw.log: read: IOPS=81, BW=327KiB/s (335kB/s)(57.5MiB/180146msec) fio.test2 fio.orig fio.test.writeback.randrw.log: read: IOPS=79, BW=318KiB/s (326kB/s)(55.9MiB/180075msec) fio.test3 fio.orig fio.test.writeback.randrw.log: read: IOPS=80, BW=321KiB/s (329kB/s)(56.5MiB/180103msec) fio.test1 fio.test fio.test.writeback.randrw.log: read: IOPS=80, BW=324KiB/s (331kB/s)(56.9MiB/180082msec) fio.test2 fio.test fio.test.writeback.randrw.log: read: IOPS=79, BW=317KiB/s (325kB/s)(55.8MiB/180106msec) fio.test3 fio.test fio.test.writeback.randrw.log: read: IOPS=79, BW=316KiB/s (324kB/s)(55.6MiB/180144msec) fio.test1 fio.orig fio.test.writeback.rw.log: read: IOPS=72.4k, BW=283MiB/s (297MB/s)(49.7GiB/180097msec) fio.test2 fio.orig fio.test.writeback.rw.log: read: IOPS=97.6k, BW=381MiB/s (400MB/s)(67.1GiB/180238msec) fio.test3 fio.orig fio.test.writeback.rw.log: read: IOPS=82.9k, BW=324MiB/s (339MB/s)(56.9GiB/180002msec) fio.test1 fio.test fio.test.writeback.rw.log: read: IOPS=81.5k, BW=318MiB/s (334MB/s)(55.0GiB/180002msec) fio.test2 fio.test fio.test.writeback.rw.log: read: IOPS=72.1k, BW=282MiB/s (295MB/s)(49.5GiB/180165msec) fio.test3 fio.test fio.test.writeback.rw.log: read: IOPS=81.8k, BW=319MiB/s (335MB/s)(56.2GiB/180037msec) fio.test1 fio.orig fio.test.writethrough.randrw.log: read: IOPS=80, BW=321KiB/s (329kB/s)(56.5MiB/180137msec) fio.test2 fio.orig fio.test.writethrough.randrw.log: read: IOPS=78, BW=314KiB/s (322kB/s)(55.3MiB/180143msec) fio.test3 fio.orig fio.test.writethrough.randrw.log: read: IOPS=78, BW=316KiB/s (323kB/s)(55.5MiB/180109msec) fio.test1 fio.test fio.test.writethrough.randrw.log: read: IOPS=81, BW=325KiB/s (333kB/s)(57.1MiB/180136msec) fio.test2 fio.test fio.test.writethrough.randrw.log: read: IOPS=80, BW=323KiB/s (331kB/s)(56.9MiB/180104msec) fio.test3 fio.test fio.test.writethrough.randrw.log: read: IOPS=78, BW=315KiB/s (323kB/s)(55.5MiB/180087msec) fio.test1 fio.orig fio.test.writethrough.rw.log: read: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180061msec) fio.test2 fio.orig fio.test.writethrough.rw.log: read: IOPS=82.4k, BW=322MiB/s (337MB/s)(56.6GiB/180009msec) fio.test3 fio.orig fio.test.writethrough.rw.log: read: IOPS=82.5k, BW=322MiB/s (338MB/s)(56.7GiB/180031msec) fio.test1 fio.test fio.test.writethrough.rw.log: read: IOPS=80.7k, BW=315MiB/s (331MB/s)(55.4GiB/180034msec) fio.test2 fio.test fio.test.writethrough.rw.log: read: IOPS=82.5k, BW=322MiB/s (338MB/s)(56.7GiB/180051msec) fio.test3 fio.test fio.test.writethrough.rw.log: read: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180058msec) fio.test1 fio.orig fio.test.none.randrw.log: write: IOPS=80, BW=324KiB/s (332kB/s)(56.0MiB/180092msec) fio.test2 fio.orig fio.test.none.randrw.log: write: IOPS=83, BW=333KiB/s (341kB/s)(58.6MiB/180137msec) fio.test3 fio.orig fio.test.none.randrw.log: write: IOPS=82, BW=329KiB/s (337kB/s)(57.0MiB/180142msec) fio.test1 fio.test fio.test.none.randrw.log: write: IOPS=82, BW=332KiB/s (340kB/s)(58.4MiB/180222msec) fio.test2 fio.test fio.test.none.randrw.log: write: IOPS=82, BW=329KiB/s (337kB/s)(57.9MiB/180177msec) fio.test3 fio.test fio.test.none.randrw.log: write: IOPS=79, BW=318KiB/s (325kB/s)(55.9MiB/180103msec) fio.test1 fio.orig fio.test.none.rw.log: write: IOPS=81.7k, BW=319MiB/s (335MB/s)(56.1GiB/180023msec) fio.test2 fio.orig fio.test.none.rw.log: write: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180070msec) fio.test3 fio.orig fio.test.none.rw.log: write: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180006msec) fio.test1 fio.test fio.test.none.rw.log: write: IOPS=83.1k, BW=325MiB/s (340MB/s)(57.1GiB/180035msec) fio.test2 fio.test fio.test.none.rw.log: write: IOPS=85.2k, BW=333MiB/s (349MB/s)(58.5GiB/180030msec) fio.test3 fio.test fio.test.none.rw.log: write: IOPS=82.8k, BW=323MiB/s (339MB/s)(56.9GiB/180003msec) fio.test1 fio.orig fio.test.writearound.randrw.log: write: IOPS=80, BW=321KiB/s (329kB/s)(56.5MiB/180123msec) fio.test2 fio.orig fio.test.writearound.randrw.log: write: IOPS=79, BW=319KiB/s (326kB/s)(56.1MiB/180114msec) fio.test3 fio.orig fio.test.writearound.randrw.log: write: IOPS=82, BW=331KiB/s (339kB/s)(58.2MiB/180108msec) fio.test1 fio.test fio.test.writearound.randrw.log: write: IOPS=82, BW=330KiB/s (338kB/s)(58.1MiB/180107msec) fio.test2 fio.test fio.test.writearound.randrw.log: write: IOPS=80, BW=321KiB/s (329kB/s)(56.5MiB/180069msec) fio.test3 fio.test fio.test.writearound.randrw.log: write: IOPS=79, BW=319KiB/s (327kB/s)(56.1MiB/180109msec) fio.test1 fio.orig fio.test.writearound.rw.log: write: IOPS=81.7k, BW=319MiB/s (335MB/s)(56.1GiB/180046msec) fio.test2 fio.orig fio.test.writearound.rw.log: write: IOPS=81.6k, BW=319MiB/s (334MB/s)(56.0GiB/180004msec) fio.test3 fio.orig fio.test.writearound.rw.log: write: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180002msec) fio.test1 fio.test fio.test.writearound.rw.log: write: IOPS=82.7k, BW=323MiB/s (339MB/s)(56.8GiB/180097msec) fio.test2 fio.test fio.test.writearound.rw.log: write: IOPS=79.5k, BW=311MiB/s (326MB/s)(54.6GiB/180003msec) fio.test3 fio.test fio.test.writearound.rw.log: write: IOPS=81.7k, BW=319MiB/s (334MB/s)(56.1GiB/180056msec) fio.test1 fio.orig fio.test.writeback.randrw.log: write: IOPS=83, BW=332KiB/s (340kB/s)(58.5MiB/180146msec) fio.test2 fio.orig fio.test.writeback.randrw.log: write: IOPS=80, BW=324KiB/s (331kB/s)(56.9MiB/180075msec) fio.test3 fio.orig fio.test.writeback.randrw.log: write: IOPS=81, BW=327KiB/s (335kB/s)(57.5MiB/180103msec) fio.test1 fio.test fio.test.writeback.randrw.log: write: IOPS=82, BW=330KiB/s (338kB/s)(57.0MiB/180082msec) fio.test2 fio.test fio.test.writeback.randrw.log: write: IOPS=80, BW=323KiB/s (331kB/s)(56.8MiB/180106msec) fio.test3 fio.test fio.test.writeback.randrw.log: write: IOPS=80, BW=322KiB/s (330kB/s)(56.6MiB/180144msec) fio.test1 fio.orig fio.test.writeback.rw.log: write: IOPS=72.4k, BW=283MiB/s (296MB/s)(49.7GiB/180097msec) fio.test2 fio.orig fio.test.writeback.rw.log: write: IOPS=97.5k, BW=381MiB/s (399MB/s)(67.0GiB/180238msec) fio.test3 fio.orig fio.test.writeback.rw.log: write: IOPS=82.8k, BW=323MiB/s (339MB/s)(56.9GiB/180002msec) fio.test1 fio.test fio.test.writeback.rw.log: write: IOPS=81.5k, BW=318MiB/s (334MB/s)(55.9GiB/180002msec) fio.test2 fio.test fio.test.writeback.rw.log: write: IOPS=72.0k, BW=281MiB/s (295MB/s)(49.5GiB/180165msec) fio.test3 fio.test fio.test.writeback.rw.log: write: IOPS=81.7k, BW=319MiB/s (335MB/s)(56.1GiB/180037msec) fio.test1 fio.orig fio.test.writethrough.randrw.log: write: IOPS=81, BW=327KiB/s (335kB/s)(57.6MiB/180137msec) fio.test2 fio.orig fio.test.writethrough.randrw.log: write: IOPS=80, BW=320KiB/s (328kB/s)(56.4MiB/180143msec) fio.test3 fio.orig fio.test.writethrough.randrw.log: write: IOPS=80, BW=322KiB/s (330kB/s)(56.6MiB/180109msec) fio.test1 fio.test fio.test.writethrough.randrw.log: write: IOPS=82, BW=331KiB/s (339kB/s)(58.2MiB/180136msec) fio.test2 fio.test fio.test.writethrough.randrw.log: write: IOPS=82, BW=330KiB/s (338kB/s)(57.0MiB/180104msec) fio.test3 fio.test fio.test.writethrough.randrw.log: write: IOPS=80, BW=321KiB/s (329kB/s)(56.5MiB/180087msec) fio.test1 fio.orig fio.test.writethrough.rw.log: write: IOPS=82.6k, BW=323MiB/s (338MB/s)(56.8GiB/180061msec) fio.test2 fio.orig fio.test.writethrough.rw.log: write: IOPS=82.3k, BW=322MiB/s (337MB/s)(56.5GiB/180009msec) fio.test3 fio.orig fio.test.writethrough.rw.log: write: IOPS=82.5k, BW=322MiB/s (338MB/s)(56.6GiB/180031msec) fio.test1 fio.test fio.test.writethrough.rw.log: write: IOPS=80.6k, BW=315MiB/s (330MB/s)(55.4GiB/180034msec) fio.test2 fio.test fio.test.writethrough.rw.log: write: IOPS=82.5k, BW=322MiB/s (338MB/s)(56.7GiB/180051msec) fio.test3 fio.test fio.test.writethrough.rw.log: write: IOPS=82.6k, BW=323MiB/s (338MB/s)(56.7GiB/180058msec)