Kuinka BFQ-ajastin otetaan käyttöön ja sitä käytetään?

Asensin juuri Linux-ytimen version 4.12 Ubuntu 17.04: een ukuu: ta (Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ).

Asia on, että kun tarkistan käytettävissä olevat I / O-ajastimet, en näytä löytävän BFQ: ta eikä Kyber I / O ajastin:

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

Joten miten käyttää yhtä uusista ajoituksista tässä Linux-versiossa?

Vastaa

En ole Ubuntussa, mutta Fedorassa tekemäni toiminta voi auttaa sinua.

BFQ on blk-mq (Multi-Queue Block IO Queuing Mechanism) ajastin, joten sinun on otettava blk-mq käyttöön käynnistyshetkellä, muokattava / etc / default / grub -tiedostoa ja lisättävä scsi_mod.use_blk_mq=1 GRUB_CMDLINE_LINUX, tämä on minun grub-tiedostoni esimerkkinä:

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" 

Tämän jälkeen sinun on päivitettävä grub-tiedosto. Fedorassa on käytettävä sudo grub2-mkconfig -o /path/to/grub.cfg, joka vaihtelee käynnistystavasta riippuen . Ubuntussa voit yksinkertaisesti ajaa:

sudo update-grub 

Käynnistä uudelleen ja jos saat tämän:

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

Luultavasti ytimesi on käännetty BFQ-moduulina moduulina , ja näin voi olla myös Kyberillä.

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

Voit lisätä sen käynnistyksen yhteydessä lisäämällä /etc/modules-load.d/bfq.conf -tiedoston, joka sisältää bfq.

On tärkeää huomata, että kun blk_mq otetaan käyttöön, on mahdotonta käyttää muita blk_mq-ajastimia, joten menetät noop cfq: n ja ei mq deadline

Ilmeisesti blk_mq-ajoitusjärjestelmä ei tue hissilippuja grubissa, sen sijaan voidaan käyttää udev-sääntöjä, ja bonus tarjoaa tarkemman hallinnan.

Luo /etc/udev/rules.d/60-scheduler.rules, jos sitä ei ollut, ja lisää:

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

Kuten huomautti täällä tarvittaessa voit erottaa rotaation a l (kiintolevyt) ja kiertämättömät (SSD) laitteet udev-säännöissä käyttämällä attribuuttia ATTR{queue/rotational}. Huomaa, että BFQ-kehittäjä Paolo Valente huomautti LinuxCon Europessa, että BFQ voi olla parempi valinta kuin noop tai deadline aikatauluttajat termein alhaisen viiveen takuista, mikä on hyvä neuvo käyttää sitä myös SSD-levyille.

Paolon vertailu: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be

Tallenna se ja lataa ja laukaise uudelleen udev rules:

sudo udevadm control --reload sudo udevadm trigger 

Kommentit

  • Haluan vain huomauttaa: älä ' älä tee tätä tietokoneissa, joissa on Linux < 4.15, jonka odotat pystyvän keskeyttämään-ram-toimintaan; < 4.15 ripustaa kaikki IO: n jatkoa varten, koska niiltä puuttuu " turvallinen SCSI lopettaa " korjaukset.
  • Sinulla saattaa olla ongelmia myös ytimessä 4.14, jossa blk-mq: n käyttöönotto näyttää antavan ytimen " hups " aivan alkupuolella g ytimen lataamista joihinkin järjestelmiin (se ' ei ole täydellisen paniikkia, vain tyhjä poikkeama ytimen sisällä). Saatat unohtaa sen, jos ' et etsi sitä, mutta jos ' olet vainoharhainen, se voi olla merkki siitä, että jokin on rikki.
  • Ehdotan ' ehdottaa hieman tarkemman udev-säännön käyttämistä. Kun kokeilin tässä esitettyä, udev yritti asettaa ajastimen joillekin laitteille, joiden nimet vastaavat kyseistä mallia, mutta eivät ' t SCSI-estolaitteita, jotka voivat käyttää BFQ-ajastinta. Sääntö, jonka päädyin, on seuraava: ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq" Se välttää kuvien sovittamisen laitteiden nimiin, mikä tekee yhteensopivuudesta tarkemman. Se ei voittanut ' t osituslaitteita, koska niillä ei ' ole " jonoa / Scheduler " -attribuutti.
  • Tärkeää on myös se, että ytimet 4.15-4.16 kärsivät melko vakavasta virheestä, jossa aseman osiomallin päivittäminen BFQ: n käytön aikana voi johtaa täydelliseen I / O-lukitukseen. Vrt .: lkml.org/lkml/2017/12/1/80
  • Voit myös echo bfq > /sys/block/sda/queue/scheduler juurena. (sudo ei toiminut minulle Ubuntu 18.04: ssä) Tämän pitäisi tehdä siitä heti tehokas.

Vastaa

Vastaanottaja laajenna suurta RomuloPBenedetti -vastausta :

Voit testata, onko bfq-ajastin todella käytettävissä tietyllä laitteella käyttämällä PROGRAM=="/bin/grep -E -q "(^|[[:space:]])bfq($|[[:space:]])" "$sys$devpath/queue/scheduler"" udev-säännössä.Tämä korvaa tosiasiallisesti DRIVERS=="sd|sr" eikä vain laukaise, jos unohdetaan scsi_mod.use_blk_mq=1

Trivia:

  • PROGRAM – Suorita ohjelma selvittääkseen, onko vastaavuuksia; avain on totta, jos ohjelma palaa onnistuneesti; Jos absoluuttista polkua ei anneta, ohjelman odotetaan elävän hakemistossa / lib / udev.
  • $sys – Sysfs-liitäntäpiste (/sys).
  • $devpath – laitteen devpath (/ devices / pci / …).

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *