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)
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1829563
Title:
bcache: risk of data loss on I/O errors in backing or caching devices
Status in linux package in Ubuntu:
Invalid
Status in linux source package in Bionic:
In Progress
Status in linux source package in Cosmic:
In Progress
Bug description:
[Impact]
* The bcache code in Bionic lacks several fixes to handle
I/O errors in both backing devices and caching devices.
* Partial or permanent errors in backing or caching devices,
specially in writeback mode, can lead to data loss and/or
the application is not notified about failed I/O requests.
* The bcache device might remain available for I/O requests
even if backing device is offline, so writes are undefined.
[Test Case]
* Detailed test cases/steps for the behavior of almost every
patch with code logic changes are provided in bug comments.
* The patchset has been tested for regressions on each cache
mode (writethrough, writeback, writearound, none) with the
xfstests test suite (on ext4), fio (random read-write) and
iozone (several read/write tests).
[Regression Potential]
* The patchset is relatively large and touches several areas
in bcache code, however, synthetic testing of the patches
has been performed, and extensive regression/stress tests
were run (as mentioned in Test Case section).
* Many patches in the patchset are 'Fixes' patches to other
patches, and no further 'Fixes' currently exist upstream.
[Other Info]
* Canonical Field Eng. deploys bcache+writeback extensively
(e.g., BootStack, UA cloud, except rare all-flash cases).
[Original Bug Description]
This is a request for a backport of the following upstream patch from
4.18:
"bcache: stop bcache device when backing device is offline"
https://github.com/torvalds/linux/commit/0f0709e6bfc3ce4e8e1c0e8573490c45f76cfeee
Field engineering uses bcache quite extensively and it would be good
to have this in the GA/bionic kernel.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1829563/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp