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
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 / …).
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.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.