If it depends on the exact type of block device, then what is the default I/O scheduler for each type of device?
Fedora 29 includes a Linux kernel from the 4.19 series. (Technically, the initial release used a 4.18 series kernel. But a 4.19 kernel is installed by the normal software updates).
Starting in version 4.19, the mainline kernel has
default y. I.e. that's what you get if you take the tree published by Linus, without applying any Fedora-specific patches. By default, SCSI and SATA devices will use the new multi-queue block layer. (Linux treats SATA devices as being SCSI, using a translation based on the SAT standard).
This is a transitional step towards removing the old code. All the old code will now be removed in version
4.21 5.0, the next kernel release after 4.20.
In the new MQ system, block devices use a new set of I/O schedulers. These include
bfq. In the mainline 4.19 kernel, the default scheduler is set as follows:
A suggestion has been made to use BFQ as the default in place of
mq-deadline. This suggestion was not accepted for 4.19.
For the legacy SQ block layer, the default scheduler is CFQ, which is most similar to BFQ.
=> The kernel's default I/O scheduler can vary, depending on the type of device: SCSI/SATA, MMC/eMMC, etc.
CFQ attempts to support some level of "fairness" and I/O priorities (
ionice). It has various complexities. BFQ is even more complex; it supports
ionice but also has heuristics to classify and prioritize some I/O automatically.
deadline style scheduling is simpler; it does not support
ionice at all.
=> Users with the Linux default kernel configuration, SATA devices, and no additional userspace policy (e.g. no
udev rules), will be subject to a change in behaviour in 4.19. Where
ionice used to work, it will no longer have any effect.
However Fedora includes specific kernel patches / configuration. Fedora also includes userspace policies such as default
What does Fedora Workstation 29 use as the default I/O scheduler? If it depends on the exact type of block device, then what is the default I/O scheduler for each type of device?