Wie kann die Festplatten-E/A-Priorität automatisch eingestellt werden?

Wie kann die Festplatten-E/A-Priorität automatisch eingestellt werden?

Wenn ich eine IO-intensive Anwendung verwende (wie Virtualbox, Steam-Datenüberprüfung oder sogar dd), reagiert mein System fast nicht mehr. Obwohl sie alle mit normaler Priorität gestartet werden, machen sie den Desktop sehr träge und verzögern den Start anderer Anwendungen erheblich.

Ich weiß, dass ich so etwas verwenden kann, ioniceum die Priorität beispielsweise auf Leerlauf zu ändern, aber im Fall von Virtualbox, wo viele Prozesse entstehen, wird es schwierig.

Kann ich dem System Hinweise geben, sodass beim Starten bestimmter Anwendungen diese mit der niedrigsten IO-Priorität gestartet werden?

Antwort1

Hinweis: Diese Lösung funktioniert nur mit dem cfq-Scheduler, wie erklärtHierSie sollten überprüfen, welches verwendet wird, indem Sie

cat /sys/block/sda/queue/scheduler

Undändernes, wenn nötig.

Wenn ich das richtig verstanden habe, soll ionicebei jedem Start eines Befehls eine bestimmte Einstellung angewendet werden. Das geht folgendermaßen:

echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/

Der erste Befehl erstellt eine Datei VirtualBoxmit dem in einfache Anführungszeichen gesetzten Text als Inhalt. Diese sollte den vollständigen Pfad zum Programm enthalten, denn wenn man nur diesen angibt, VirtualBoxkann es als die gerade erstellte Datei interpretiert werden und eine „Schleife“ erzeugen.

Der zweite Befehl macht es ausführbar und der dritte verschiebt diese neue Datei in einen Ordner, der sich vor dem Bin-Ordner „System“ befindet /usr/bin, sodass unsere neue Datei anstelle der ursprünglichen ausgeführt wird. Der Teil „$@“ enthält alle Argumente, mit denen der Befehl aufgerufen wurde, sodass sie an den eigentlichen VirtualBox-Befehl weitergeleitet werden.

Laut Antwort ("ja") auf diese Super User FrageErben untergeordnete Prozesse die IO-Prioritäten ihrer Eltern? Wie überprüfen Sie die IO-Priorität eines laufenden Prozesses?, es sollte ausreichen, ioniceden übergeordneten Prozess wie folgt anzuzeigen:

ionice -c 3 VirtualBox

Ausionice manpagesind die folgenden Werte für die E/A-Planungsklasse verfügbar:

  • 0 für keine
  • 1 für Echtzeit
  • 2 für Best Effort
  • 3 für Leerlauf (wird im obigen Beispiel verwendet)

Es kann eine Nummer oder ein Klassenname verwendet werden.

Die Option ist außerdem -n levelauf Echtzeit- und Best-Effort-Klassen anwendbar, wobei 0-7 die gültigen Daten (Prioritätsstufen) sind.

Antwort2

Mit dem Befehl „renice“ können Sie Prozesse priorisieren:

renice -<priority> <application's pid>

Es kann auch sein, dass Ihr Laufwerk zu weit herunterfährt, so dass es beim Starten einer Anwendung wie Virtualbox erst hochfahren muss, bevor Sie mit der Problemumgehung beginnen können (das kann eine Weile dauern).

verwandte Informationen