Hinweis: Diese Lösung funktioniert nur mit dem cfq-Scheduler, wie hier erläutert . Sie sollten überprüfen, welche verwendet wird, indem Sie ausstellen
cat /sys/block/sda/queue/scheduler
und ändern Sie es gegebenenfalls.
Wenn ich das richtig verstanden habe, möchten Sie, dass ionicejedes Mal, wenn Sie einen Befehl starten, eine Einstellung angewendet wird. Sie können es so machen:
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 Text in einfachen Anführungszeichen als Inhalt. Dies sollte den vollständigen Pfad zum Programm haben, denn wenn man es nur angibt VirtualBox, kann es als die gerade erstellte Datei interpretiert und eine "Schleife" erstellt werden.
Der zweite Befehl macht es ausführbar und der dritte verschiebt diese neue Datei in einen Ordner, der sich vor dem Ordner "system" bin befindet /usr/bin, sodass unsere neue Datei anstelle des Originals ausgeführt wird. Der Teil "$ @" enthält alle Argumente, mit denen der Befehl aufgerufen wurde, sodass sie an den realen VirtualBox-Befehl weitergeleitet werden.
Entsprechend der Antwort ("Ja") auf diese Super-User-Frage erben Kinderprozesse Ionice-Prioritäten von ihren Eltern? Wie überprüfen Sie die E / A-Priorität eines laufenden Prozesses? sollte es für ioniceden übergeordneten Prozess wie folgt ausreichen :
ionice -c 3 VirtualBox
Auf der ionice Manpage stehen folgende Werte für E / A-Planungsklassen zur Verfügung:
- 0 für keine
- 1 für Echtzeit
- 2 für Bestleistung
- 3 für Leerlauf (im obigen Beispiel verwendet)
Ein Nummern- oder Klassenname kann verwendet werden.
Die -n levelOption gilt auch für Echtzeit- und Best-Effort-Klassen mit 0-7 als gültigen Daten (Prioritätsstufen).