Fedora Workstation 29将什么用作默认I / O调度程序?

Sourcejedi

如果取决于块设备的确切类型,那么每种设备的默认I / O调度程序是什么?

背景资料

Fedora 29包含4.19系列的Linux内核。(从技术上讲,初始版本使用4.18系列内核。但是,正常软件更新会安装4.19内核)。

从版本4.19开始,主线内核使用CONFIG_SCSI_MQ_DEFAULTas default y也就是说,如果您采用Linus发布的树,而未应用任何Fedora特定的修补程序,那么您将获得此结果。默认情况下,SCSI和SATA设备将使用新的多队列块层。(Linux使用基于SAT标准的转换将SATA设备视为SCSI )。

这是朝着删除旧代码的过渡步骤。现在,所有旧代码将在版本中删除4.215.0,是4.20之后的下一个内核发行版。

在新的MQ系统中,块设备使用一组新的I / O调度程序。这些措施包括nonemq-deadline,和bfq在主线4.19内核中,默认调度程序设置如下:

/ *对于blk-mq设备,我们默认对单个队列设备使用mq-deadline(如果可用)。如果没有截止日期,或者我们有多个队列,则默认为“无”。* /

有人建议使用BFQ作为默认值来代替mq-deadline4.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章