您不能在 Kubuntu 19.04 中选择 CFQ 调度程序,因为它已从 5.0 内核中删除。在我的情况下,我需要 CFQ,因为它在以 Windows 10 作为来宾 SO 运行虚拟机时提供旋转硬盘驱动器的最佳性能,其他调度程序使系统无法使用。默认情况下,安装中的 Kubuntu 19.04 仅提供 2 部电梯 mq-deadline,在我的情况下,没有一个提供比 CFQ 差得多的性能。
sudo cat/sys/block/sda/queue/scheduler
mq-deadline none
只有我必须尝试使用默认情况下未出现在安装中的其他 2 个调度程序,这些调度程序是 BFQ 和 Kyber。
接下来我将描述如何启用 BFQ 和 Kyber 模块
1)首先使用以下命令验证系统中是否存在模块:
sudo modprobe bfq
sudo modprobe kyber-iosched
如果没有错误,您可以使用命令验证模块是否已加载
sudo cat/sys/block/sda/queue/scheduler
必须返回
mq-deadline [bfq] kyber none
2)使这些模块在系统启动时加载:
sudo -i
echo kyber-iosched > /etc/modules-load.d/kyber-oisched.conf
echo bfq > /etc/modules-load.d/bfq.conf
3)下一步是告诉系统使用哪个调度器,如果文件不存在则创建一个文件:
/etc/udev/rules.d/60-scheduler.rules
用以下几行
# set cfq scheduler
ACTION=="add|change",KERNEL=="sd[a-z]",ATTR{queue/rotational}=="1",ATTR{queue/scheduler}="bfq"
ACTION=="add|change",KERNEL=="sr[0-9]",ATTR{queue/rotational}=="1",ATTR{queue/scheduler}="bfq"
如果您想尝试 kyber 而不是 BFQ,请将显示“bfq”的行的最后一个单词替换为“kyber”
4)让系统识别变化
须藤 udevadm 控制 --reload; sudo udevadm 触发器
并且更改已通过验证
sudo cat/sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none
完成的。
资料来源:
https://community.chakralinux.org/t/how-to-enable-the-bfq-io-scheduler-on-kernel-4-12/6418
https://unix.stackexchange.com/questions/375600/how-to-enable-and-use-the-bfq-scheduler#376136
根据您的内核版本,CFQ 可能会消失。自 Kernel 5.0 起已将其删除。这是相关的提交组。
在带有普通旧旋转硬盘的传统笔记本电脑上,BFQ 是拥有响应系统的关键,而其他一些任务是在后台访问磁盘。以前 Ubuntu 通用内核使用 cfq:
升级后,现有的 Ubuntu 内核已删除 CFQ(见上文),我发现了这个默认值:
由于存在后台磁盘活动的极端滞后,这是不可接受的。我认为这在具有 SDD/NVMe 大容量存储的现代硬件上不是问题。
正如 OP 所说,切换到 bfq 可以解决滞后问题。
马可·甘贝罗尼
Ubuntu 19.04 使用 5.0 内核,因此 CFQ 和 Deadline 不再可用。
对于即使在 HDD 上的大多数工作负载,使用 mq-deadline 调度程序与使用任何旧调度程序一样有效。仅对于仅具有顺序磁盘读/写的工作负载,没有任何其他干扰,旧调度程序更快。