您無法在 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)使系統識別變化
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解決了延遲問題。
馬可·甘貝羅尼