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     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to