无法在 Kubuntu 19.04 上设置 CFQ 提升程序

无法在 Kubuntu 19.04 上设置 CFQ 提升程序

您无法在 Kubuntu 19.04 中选择 CFQ 调度程序,因为它已从 5.0 内核中删除。就我而言,我需要 CFQ,因为当我以 Windows 10 作为客户机运行虚拟机时,它为我的旋转硬盘提供了最佳性能,因此,其他调度程序会使系统无法使用。默认情况下,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)让系统识别变化

sudo udevadm 控制--重新加载;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

答案1

根据您的内核版本,CFQ 可能已消失。它已从内核 5.0 中删除。这是相关提交组

答案2

Ubuntu 19.04 使用 5.0 内核,因此 CFQ 和 Deadline 不再可用。

对于大多数工作负载,即使是在 HDD 上,使用 mq-deadline 调度程序与使用任何旧调度程序一样高效。只有对于只有顺序磁盘读写且没有任何其他干扰的工作负载,旧调度程序才会更快。

答案3

在旧式笔记本电脑上,使用普通的老式旋转硬盘,当其他任务在后台访问磁盘时,BFQ 对于拥有响应系统至关重要。以前,Ubuntu 通用内核使用 cfq:

    $ zgrep IOSCHED /boot/config-*-generic
    ...
    /boot/config-4.13.0-36-generic:CONFIG_DEFAULT_IOSCHED="cfq"

升级后,原版 Ubuntu 内核已删除 CFQ(见上文),我发现了以下默认设置:

    $ cat /sys/block/sda/queue/scheduler
    [mq-deadline] none

由于后台磁盘活动导致的极端滞后,这是不可接受的。我认为在具有 SDD/NVMe 大容量存储的现代硬件上,这个问题要小得多。

正如 OP 所说,切换到 bfq 可以解决滞后问题。

马可·甘贝罗尼

相关内容