Ich habe einige virtuelle Maschinen, auf denen das Cloud-basierte Ubuntu-Image 14.04-1 LTS läuft. Ich wollte die IO-Leistung verschiedener IO-Scheduler auf der VM sehen, also ging ich /sys/block/<drive>/queue/scheduler
auf das Gastbetriebssystem, um den IO-Scheduler zu ändern. Normalerweise sollte es cfq
, deadline
, oder noop
zur Auswahl geben. Aber was ich gesehen habe, ist none
. Bedeutet das, dass Canonical den I/O-Scheduler im Cloud-basierten Image entfernt hat oder none
ist der Scheduler hier der umbenannte noop
Scheduler? Und was passiert, wenn wir keinen I/O-Scheduler im System haben? Alle IO-Anfragen wurden direkt in FIFO-Reihenfolge an den Host gesendet?
Danke für die Aufklärung!
Antwort1
IO-Scheduler mit geringer Latenz
(Dieser Schritt ist nicht erforderlich für SSDs, die das NVMe-Protokoll statt SATA verwenden, da diese den herkömmlichen E/A-Scheduler umgehen und
blk-mq
stattdessen das Modul verwenden.)Der standardmäßige I/O-Scheduler stellt Daten in eine Warteschlange, um Suchvorgänge auf Festplatten zu minimieren, was bei SSDs nicht notwendig ist. Verwenden Sie daher den
"deadline"
Scheduler, der nur sicherstellt, dass Massentransaktionen kleine Transaktionen nicht verlangsamen: Installierensysfsutils
undecho "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf
(passen Sie sdX an Ihre SSD an) Neustart oder
echo deadline > /sys/block/sdX/queue/scheduler
Die Antwort ist also: none
ist KEIN Alias für noop
. none
bedeutet „der Scheduler wird nicht verwendet“.
Antwort2
Es scheint, dass bei Kerneln >= 3.13 none
kein Alias von noop
mehr ist. Es wird angezeigt, wenn derblk-mq
E/A-Frameworkim Einsatz ist; dies bedeutet eine vollständige Umgehung der alten Scheduler, da blk-mq
(im Moment) überhaupt keine Scheduler zur Auswahl stehen.
In früheren Kerneln none
ist wirklich ein schlecht dokumentierter Alias für noop
. SieheHierfür mehr Details.
Antwort3
„None“ ist kein Alias für „noop“.
„Keine“ wird angezeigt, da kein Scheduler verwendet wird. SSDs, die das NVMe-Protokoll statt SATA verwenden, umgehen den herkömmlichen E/A-Scheduler.
Antwort4
https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers
keine (Multiqueue) Der Multi-Queue-No-Op-E/A-Scheduler. Führt keine Neuordnung der Anfragen durch, minimaler Overhead. Ideal für schnelle Random-E/A-Geräte wie NVME.