btrfs-progs icon indicating copy to clipboard operation
btrfs-progs copied to clipboard

Scrub and ionice, warnings, recommendations and workarounds

Open kdave opened this issue 4 years ago • 2 comments

The ionice (parameter -c) used to limit IO impact on the system stopped working when CFQ io scheduler wast dropped and replaced by mq-deadline. The latter does not implement it at all and this resulted as significant performance loss, noticed by many users. The docs have been updated but we could do more:

  • [ ] warn if scrub is started on a device that has mq-deadline as io scheduler, point to documenation
  • [ ] update docs to mention BFQ as an alternative io scheduler (check stability status)
  • [ ] cgroups (v2) could be used to limit io, this should work for scrub as well, provide example commands how to do that, eventually add a commandline prameter to either use existing cgroup (like idle class for the whole system) or to let scrub create its own with a given io limit (docker does something similar)
  • [ ] (bonus) somebody talks to block layer developers to find out if ionice will be back

kdave avatar Oct 22 '20 09:10 kdave

I believe that BFQ supports ionice as well as scheduling through cgroups.

https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-tuning-io.html#cha-tuning-io-schedulers-blkmq

Forza-tng avatar Oct 22 '20 10:10 Forza-tng

Also generally mention about dependency of -c and -n on the IO scheduler used in man pages.

rklemme avatar Oct 22 '20 13:10 rklemme