如果取决于块设备的确切类型,那么每种设备的默认I / O调度程序是什么?
Fedora 29包含4.19系列的Linux内核。(从技术上讲,初始版本使用4.18系列内核。但是,正常软件更新会安装4.19内核)。
从版本4.19开始,主线内核使用CONFIG_SCSI_MQ_DEFAULT
as default y
。也就是说,如果您采用Linus发布的树,而未应用任何Fedora特定的修补程序,那么您将获得此结果。默认情况下,SCSI和SATA设备将使用新的多队列块层。(Linux使用基于SAT标准的转换将SATA设备视为SCSI )。
这是朝着删除旧代码的过渡步骤。现在,所有旧代码将在版本中删除4.215.0,是4.20之后的下一个内核发行版。
在新的MQ系统中,块设备使用一组新的I / O调度程序。这些措施包括none
,mq-deadline
,和bfq
。在主线4.19内核中,默认调度程序设置如下:
/ *对于blk-mq设备,我们默认对单个队列设备使用mq-deadline(如果可用)。如果没有截止日期,或者我们有多个队列,则默认为“无”。* /
有人建议使用BFQ作为默认值来代替mq-deadline
。4.19不接受此建议。
对于旧版SQ块层,默认调度程序为CFQ,与BFQ最相似。
=>内核的默认I / O调度程序可能会有所不同,具体取决于设备的类型:SCSI / SATA,MMC / eMMC等。
CFQ尝试支持某种程度的“公平”和I / O优先级(ionice
)。它具有各种复杂性。BFQ更加复杂;它支持ionice
但也具有启发式功能,可以自动对某些I / O进行分类和区分优先级。deadline
样式调度更简单;它根本不支持ionice
。
=>具有Linux默认内核配置,SATA设备且没有其他用户空间策略(例如,没有udev
规则)的用户将受到4.19中行为的更改。在ionice
过去工作的地方,它将不再起作用。
但是Fedora包含特定的内核补丁/配置。Fedora还包括用户空间策略,例如默认udev
规则。
Fedora Workstation 29将什么用作默认I / O调度程序?如果取决于块设备的确切类型,那么每种设备的默认I / O调度程序是什么?
Fedora 29随附4.18.16内核。似乎CFQ是默认设置。
$ grep CONFIG_DEFAULT_IOSCHED= /boot/config-4.18.16-300.fc29.x86_64
CONFIG_DEFAULT_IOSCHED="cfq"
$ grep CONFIG_SCSI_MQ_DEFAULT /boot/config-4.18.16-300.fc29.x86_64
# CONFIG_SCSI_MQ_DEFAULT is not set
$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
截至撰写本文时(2018年11月24日),4.19.3作为F29的更新可用。但是,配置选项似乎没有更改。
4.20.0(RC1)在“ Rawhide”开发树中。在该开发树内核中,CFQ仍然是默认值,并且CONFIG_SCSI_MQ_DEFAULT
仍未设置。https://lists.fedoraproject.org/archives/list/[email protected]/上的Fedora内核列表是讨论是否应该更改的最佳位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句