Právě jsem nainstaloval linuxové jádro verze 4.12 na Ubuntu 17.04 pomocí ukuu (Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ).
Jde o to, že když zkontroluji dostupné I / O plánovače, nemohu „najít BFQ ani Kyber I / O plánovač:
cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq]
Jak tedy použít jeden z nových plánovačů v této verzi Linuxu?
Odpovědět
Nejsem v Ubuntu, ale to, co jsem udělal ve Fedoře, vám může pomoci.
BFQ je blk-mq (Multi-Queue Block IO Queuing Mechanism) plánovač, takže musíte povolit blk-mq při spuštění, upravit soubor / etc / default / grub a přidat scsi_mod.use_blk_mq=1
do svého GRUB_CMDLINE_LINUX
, toto je můj soubor grub, například:
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"
Poté musíte svůj grub aktualizovat. Ve Fedoře musíme použít sudo grub2-mkconfig -o /path/to/grub.cfg
, který se liší v závislosti na způsobu zavádění . V Ubuntu můžete jednoduše spustit:
sudo update-grub
Restartujte, a pokud se vám to podaří:
cat /sys/block/sda/queue/scheduler [mq-deadline] none
Vaše jádro bylo pravděpodobně zkompilováno pomocí BFQ jako modulu , což může být případ Kyberu.
sudo modprobe bfq sudo cat /sys/block/sda/queue/scheduler [mq-deadline] bfq none
Můžete jej přidat při spuštění přidáním souboru /etc/modules-load.d/bfq.conf
obsahujícího bfq
.
Je důležité si uvědomit, že povolení blk_mq znemožňuje použití jiných než blk_mq plánovačů, takže ztratíte noop cfq a non mq deadline
Plánovací systém blk_mq zjevně nepodporuje příznaky výtahu v grubu, místo toho lze použít pravidla udev, s bonusem nabídnout jemnější kontrolu.
Vytvořte /etc/udev/rules.d/60-scheduler.rules
, pokud neexistoval, a přidejte:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Jak bylo uvedeno zde můžete podle potřeby rozlišovat mezi rotacía l (HDD) a nerotační (SSD) zařízení v pravidlech udev pomocí atributu ATTR{queue/rotational}
. Pamatujte, že Paolo Valente, vývojář BFQ, v LinuxCon Europe upozornil, že BFQ může být lepší volbou než plánovače noop
nebo deadline
záruk nízké latence, díky čemuž je dobré ji použít i pro SSD.
Srovnání Paolo: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
Uložte jej, znovu načtěte a spusťte udev rules
:
sudo udevadm control --reload sudo udevadm trigger
Komentáře
- Chci jen poznamenat: nedělejte to v počítačích s Linuxem iv id = „' 097127ad57 „>
4.15, které očekáváte, že budete moci pozastavit-na-ram; < 4.15 zablokuje všechny IO při obnovení, protože jim chybí " bezpečné SCSI quiescing " opravy.
ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq"
Vyhýbá se porovnávání vzorů s názvy zařízení, čímž je shoda přesnější. Nevyhrál ' t odpovídající oddílová zařízení, protože ' nemá " frontu / plánovač " atribut. echo bfq > /sys/block/sda/queue/scheduler
jako root. (sudo pro mě nefungovalo v Ubuntu 18.04) Toto by mělo okamžitě začít fungovat. Odpovědět
Na rozšířit skvělé odpověď RomuloPBenedetti :
Pomocí v pravidle udev.Tím se účinně nahradí DRIVERS=="sd|sr"
a nespustí se, pokud někdo zapomene scsi_mod.use_blk_mq=1
Drobnosti:
-
PROGRAM
– provést program a zjistit, zda existuje shoda; klíč je pravdivý, pokud se program úspěšně vrátí; Pokud není zadána absolutní cesta, očekává se, že program bude žít v / lib / udev. -
$sys
– přípojný bod sysfs (/sys
). -
$devpath
– devpath zařízení (/ devices / pci / …).