Hogyan engedélyezhetem és használhatom a BFQ ütemezőt?

Éppen az ukuu (Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ).

Az a helyzet, hogy amikor ellenőrizem a rendelkezésre álló I / O ütemezőket, úgy tűnik, hogy nem találom sem a BFQ-t, sem a Kyber I / O ütemező:

cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq] 

Tehát hogyan használhatja az új ütemezők egyikét ebben a Linux-verzióban?

Válasz

Nem vagyok az Ubuntuban, de az segíthet, amit a Fedorában tettem.

A BFQ egy blk-mq (Multi-Queue Block IO Queuing) Mechanism) ütemező, ezért indításkor engedélyeznie kell az blk-mq fájlt, szerkesztenie kell az / etc / default / grub fájlt, és hozzá kell adnia a scsi_mod.use_blk_mq=1 fájlt a GRUB_CMDLINE_LINUX, ez az én grub fájlom, például:

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" 

Ezt követően frissítenie kell a grub-ot. A Fedorán sudo grub2-mkconfig -o /path/to/grub.cfg -et kell használnunk, amely változik az indítási módtól függően . Az Ubuntuban egyszerűen futtathatja:

sudo update-grub 

Indítsa újra, és ha ezt megkapja:

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

Valószínűleg a rendszermagot BFQ-val fordították le modulként , és ez érvényes lehet a Kyberre is.

sudo modprobe bfq sudo cat /sys/block/sda/queue/scheduler [mq-deadline] bfq none 

Indításkor hozzáadhatja egy bfq

fájl hozzáadásával.

.

Fontos megjegyezni, hogy a blk_mq bekapcsolásával lehetetlenné válik a nem blk_mq ütemezők használata, így elveszíti a noop cfq és a non mq deadline

Nyilvánvaló, hogy a blk_mq ütemezési rendszer nem támogatja a lift zászlókat a grubban, ehelyett az udev szabályok használhatók, azzal a bónusszal, hogy alaposabb vezérlést kínál.

Hozzon létre /etc/udev/rules.d/60-scheduler.rules, ha nem létezett, és adja hozzá:

ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq" 

Mint hegyes itt , ha szükséges, meg tudja különböztetni a rotációt l (HDD) és nem rotációs (SSD) eszközök az udev szabályokban a ATTR{queue/rotational} attribútum használatával. Ne feledje, hogy Paolo Valente, a BFQ fejlesztője a LinuxCon Europe-ban rámutatott, hogy a BFQ jobb választás lehet, mint a noop vagy deadline ütemezők alacsony késleltetésű garanciák, mi az a jó tanács, hogy SSD-k esetén is használják.

Paolo összehasonlítása: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be

Mentse el, majd töltse be és indítsa újra udev rules:

sudo udevadm control --reload sudo udevadm trigger 

Megjegyzések

  • Csak annyit szeretnék megjegyezni: ne ' ne tedd ezt Linuxos számítógépeken < 4.15, amelyet várhatóan képes lesz felfüggeszteni a ram-ra; < 4.15 az összes IO-t felakasztja az önéletrajz folytatásakor, mert hiányzik belőlük a " biztonságos SCSI kikapcsolja a " javításokat.
  • A 4.14-es kernel is problémái lehetnek, ahol az blk-mq engedélyezése úgy tűnik, hogy egy kernel " hoppá " közvetlenül a kezdetnél g a rendszermag egyes rendszerekre való betöltése (ez ' nem egy pontos pánik, csak egy nulldereferencia a kernelen belül). Hiányozhat, ha ' nem keresi, de ha paranoiás vagy ', akkor annak jele lehet, hogy valami megszakadt.
  • Én ' javaslom egy kicsit pontosabb udev-szabály használatát. Amikor kipróbáltam az itt bemutatottat, az udev megpróbálta beállítani az ütemezőt néhány eszközhöz, amelyek neve megegyezik azzal a mintával, de nem ' t olyan SCSI blokkoló eszközök, amelyek képesek használni a BFQ ütemezőt. A szabály, amellyel végül kötöttem ki: ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq" Elkerüli a minták illesztését az eszközök nevéhez, ami pontosabbá teszi az egyezést. Nem nyert ' t a partíciós eszközökkel, mert nem ' nincsenek " sorban / ütemező " attribútum.
  • Szintén fontos megjegyezni, hogy a 4.15-4.16-os kernek elég súlyos hibát szenvednek, ahol a meghajtó partíciós sémájának frissítése a BFQ használata közben vezethet a teljes I / O zároláshoz. Vö .: lkml.org/lkml/2017/12/1/80
  • Emellett echo bfq > /sys/block/sda/queue/scheduler gyökérként. (A sudo nem működött nálam az Ubuntu 18.04-ben) Ennek azonnal hatékonnyá kell tennie.

Válasz

nagy kiterjesztés RomuloPBenedetti válasz :

A az udev szabályban.Ez gyakorlatilag felváltja a (z) DRIVERS=="sd|sr" szót, és csak akkor nem kapcsol be, ha elfelejtette a scsi_mod.use_blk_mq=1

Trivia:

  • PROGRAM – Futtasson egy programot annak megállapítására, hogy van-e egyezés; a kulcs igaz, ha a program sikeresen visszatér; Ha nincs megadva abszolút útvonal, akkor a program várhatóan a / lib / udev fájlban fog élni.
  • $sys – A sysfs csatolási pont (/sys).
  • $devpath – Az eszköz devpath-ja (/ devices / pci / …).

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük