Wie wechsle ich zum Noop Scheduler?

29

Ich habe eine SSD in meinem Laptop und mir wurde gesagt, dass der Wechsel zum "noop" -Planer bevorzugt wird.

Wie ändere ich in den Noop-Scheduler und wo nehme ich die Änderung vor, damit sie über Neustarts hinweg bestehen bleibt?

Jorge Castro
quelle

Antworten:

21

Bearbeiten Sie / etc / default / grub, zum Beispiel gksudo gedit /etc/default/grubmüssen Sie hier elevator = noop hinzufügen.

Wechseln Sie GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"zu GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop".

Führen Sie dann aus, sudo update-grub2und starten Sie neu.

Anonym
quelle
6
Die Antwort von Anonym ist gut, um die Standardeinstellung auf allen Festplatten eines Systems zu ändern. Im Gegensatz dazu legt Eliah Kagans Antwort die Standardeinstellung für bestimmte Datenträger fest. Bei einem Laptop mit einem einzelnen Laufwerk funktioniert beides einwandfrei. Für Systeme mit mehreren Festplatten (insbesondere Festplatten mit SSDs und rotierenden Laufwerken) bietet Eliah Kagans Antwort eine differenziertere Steuerung.
Royce Williams
28

Angenommen, Ihre Festplatte ist /dev/sda. Dann können Sie überprüfen, welcher Scheduler aktuell dafür verwendet wird:

cat /sys/block/sda/queue/scheduler

(Der aktuell verwendete Scheduler wird in [ ]eckige Klammern gesetzt.)

Und Sie könnten es mit dem Noop-Scheduler machen:

echo noop > /sys/block/sda/queue/scheduler

Weitere Informationen finden Sie in diesem Artikel .

Um die Änderung beizubehalten, können Sie den Befehl eingeben /etc/rc.local.

Eliah Kagan
quelle
1
Ich erhalte die Fehlermeldung "Genehmigung verweigert", obwohl sudo
Lucas Bustamante
@LucasBustamante Läufst du sudo echo noop > /sys/block/sda/queue/scheduler? Das funktioniert nicht, da die Shell, die als Benutzer ausgeführt wird, die Umleitung einrichtet, bevor der Befehl ausgeführt wird, dessen Ausgabe umgeleitet wird. Sie können echo noop | sudo tee /sys/block/sda/queue/schedulerstattdessen verwenden. Siehe "Hallo"> "x.txt" kann auch mit sudo nicht wiedergegeben werden? und Wie löse ich "Erlaubnis verweigert" bei Verwendung von sudo mit Umleitung in Bash? Weitere Informationen und andere Ansätze. (Wenn Sie das nicht meinen, lassen Sie es mich bitte wissen.)
Eliah Kagan,
danke für die antwort, das hat auch nicht geholfen. Ich bin ein NVMe SSD mit, ich glaube es nicht den Scheduler überhaupt nicht verwendet, von dem, was ich verstanden serverfault.com/questions/693348/...
Lucas Bustamante
14

Diese Debian-Referenz zeigt, wie man SSDs dynamisch erkennt und den Scheduler entsprechend ändert:

In Systemen mit verschiedenen Laufwerkstypen können Sie die Einstellungen mit einer udev-Regel anpassen (erstellen Sie /etc/udev/rules.d/60-ssd-scheduler.rules):

# Legen Sie den Terminplaner für nicht rotierende Datenträger fest

 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"

So stellen Sie sicher, dass Ihr Kernel den Rotationsstatus erkennt:

$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
/sys/block/sda/queue/rotational is 1
/sys/block/sdb/queue/rotational is 1
/sys/block/sdc/queue/rotational is 0   <=== Only this is SSD!

Alles oben Genannte wird direkt aus der Debian-Referenz zitiert, die viele andere Elemente enthält, die für erstmalige SSD-Benutzer von Interesse sind.

Royce Williams
quelle
root @ titan: / home / kessaras # für f in / sys / block / sd? / queue / rotary; do printf "$ f is"; cat $ f; erledigt / sys / block / sda / queue / rotation ist 0 / sys / block / sdb / queue / rotation ist 0 / sys / block / sdc / queue / rotation ist 1 / sys / block / sdd / queue / rotation ist 1 root @titan: / home / kessaras # cat / sys / block / sd * / queue / scheduler [mq-deadline] keine [mq-deadline] keine [mq-deadline] keine [mq-deadline] keine Hier stimmt etwas nicht. Es ändert alle Festplatten zum Stichtag
Pavlos Theodorou
Der Befehl ändert nichts - er meldet lediglich, ob eine Festplatte "rotiert" (HDD). Rotation = 0 bedeutet, dass es sich um eine SSD oder ein anderes nicht rotierendes Laufwerk handelt.
Royce Williams
Was meinst du damit, dass es nichts ändert? Und was macht die dort geschriebene udev-Regel? Es ist auch in einem gelben Kasten. Du meinst, ich bin blind oder ich kann nicht lesen?
Pavlos Theodorou
1
Mein Fehler. Es scheint, als hätten sie im neuesten Kernel die Scheduler entfernt ... ??? für f in / sys / block / sd? / queue / scheduler; do printf "$ f is"; cat $ f; done / sys / block / sda / queue / scheduler ist [mq-deadline] none / sys / block / sdb / queue / scheduler ist [mq-deadline] none / sys / block / sdc / queue / scheduler ist [mq-deadline ] keine / sys / block / sdd / queue / scheduler ist [mq-deadline] keine Der Artikel und alles, was Sie geschrieben haben, ist in Ordnung. Es gibt nur eine Frist und nichts anderes zur Auswahl.
Pavlos Theodorou