Re: Setting up default iosched in 5.0+

From: Alexey Dobriyan
Date: Fri May 24 2019 - 14:28:40 EST


On Fri, May 24, 2019 at 10:46:54AM -0400, Jeff Moyer wrote:
> Hi, Alexey,
>
> Alexey Dobriyan <adobriyan@xxxxxxxxx> writes:
>
> > 5.0 deleted three io schedulers and more importantly CONFIG_DEFAULT_IOSCHED
> > option:
> >
> > commit f382fb0bcef4c37dc049e9f6963e3baf204d815c
> > block: remove legacy IO schedulers
> >
> > After figuring out that I silently became "noop" customer enabling just
> > BFQ didn't work: "noop" is still being selected by default.
> >
> > There is an "elevator=" command line option but it does nothing.
> >
> > Are users supposed to add stuff to init scripts now?
>
> A global parameter was never a good idea, because systems often have
> different types of storage installed which benefit from different I/O
> schedulers. The goal is for the default to just work.

Kernel can by default complain about "noop" for HDD disks and setup
"noop" for SSD. And then let admins customise it further.

> If you feel that the defaults don't work for you, then udev rules are
> the way to go.
>
> If you also feel that you really do want to set the default for all
> devices, then you can use the following udev rule to emulate the old
> elevator= kernel command line parameter:
>
> https://github.com/lnykryn/systemd-rhel/blob/rhel-8.0.0/rules/40-elevator.rules

The following udev rules seem to work, thanks:

$ cat /etc/udev/rules.d/01-iosched.rules
SUBSYSTEM=="block", ACTION=="add", KERNEL=="sda", ATTR{queue/scheduler}="bfq"
SUBSYSTEM=="block", ACTION=="add", KERNEL=="sdb", ATTR{queue/scheduler}="bfq"