Saya tidak di Ubuntu, tetapi apa yang saya lakukan di Fedora dapat membantu Anda.
BFQ adalah scheduler blk-mq (Multi-Queue Block IO Queuing Mechanism), jadi Anda perlu mengaktifkan blk-mq saat boot, edit file / etc / default / grub Anda dan tambahkan scsi_mod.use_blk_mq=1
ke file GRUB_CMDLINE_LINUX
ini, ini file grub saya, karena sebuah contoh:
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=false
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="quiet vt.global_cursor_default=0 scsi_mod.use_blk_mq=1"
GRUB_DISABLE_RECOVERY="true"
Setelah itu, Anda harus memperbarui grub Anda. Pada Fedora kita harus menggunakan sudo grub2-mkconfig -o /path/to/grub.cfg
, yang bervariasi tergantung pada metode boot . Di Ubuntu, Anda cukup menjalankan:
sudo update-grub
Reboot, dan jika Anda mendapatkan ini:
cat /sys/block/sda/queue/scheduler
[mq-deadline] none
Mungkin kernel Anda dikompilasi dengan BFQ sebagai modul , dan ini juga berlaku untuk Kyber.
sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none
Anda dapat menambahkannya saat boot dengan menambahkan /etc/modules-load.d/bfq.conf
file yang berisi bfq
.
Penting untuk dicatat bahwa mengaktifkan blk_mq mengubahnya menjadi mustahil untuk menggunakan penjadwal non blk_mq, sehingga Anda akan kehilangan noop cfq dan batas waktu non mq
Rupanya sistem penjadwalan blk_mq tidak mendukung flag elevator di grub, aturan udev dapat digunakan sebagai gantinya, dengan bonus menawarkan kontrol yang lebih berbutir.
Buat /etc/udev/rules.d/60-scheduler.rules
jika tidak ada dan tambahkan:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Seperti yang ditunjukkan di sini jika diperlukan, Anda dapat membedakan antara perangkat rotasi (HDD) dan non-rotasi (SSD) dalam aturan udev menggunakan atribut ATTR{queue/rotational}
. Ketahuilah bahwa Paolo Valente, pengembang BFQ, menunjuk di LinuxCon Eropa bahwa BFQ bisa menjadi pilihan yang lebih baik daripada penjadwal noop
atau deadline
dalam hal jaminan latensi rendah, apa yang membuat saran yang baik untuk menggunakannya untuk SSD juga.
Perbandingan Paolo: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
Simpan, dan muat ulang dan picu udev rules
:
sudo udevadm control --reload
sudo udevadm trigger
ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq"
Ini menghindari pencocokan pola dengan nama perangkat, yang membuat pencocokan lebih akurat. Itu tidak akan cocok dengan perangkat partisi karena mereka tidak memiliki atribut "antrian / penjadwal".Untuk memperpanjang jawaban RomuloPBenedetti yang luar biasa :
Anda dapat menguji, apakah penjadwal bfq sebenarnya tersedia di perangkat tertentu dengan menggunakan
PROGRAM=="/bin/grep -E -q '(^|[[:space:]])bfq($|[[:space:]])' '$sys$devpath/queue/scheduler'"
aturan udev. Ini akan secara efektif menggantikanDRIVERS=="sd|sr"
dan tidak memecat jika ada yang lupascsi_mod.use_blk_mq=1
Hal sepele:
PROGRAM
- Menjalankan program untuk menentukan apakah ada kecocokan; kuncinya adalah benar jika program berhasil kembali; Jika tidak ada path absolut yang diberikan, program diharapkan untuk hidup di / lib / udev.$sys
- Titik pemasangan sysfs (/sys
).$devpath
- Devpath perangkat (/ devices / pci / ...).sumber