ionice - setzt oder ermittelt die E/A-Scheduling-Klasse und
-Priorität eines Prozesses
ÜBERSICHT
ionice [-c Klasse] [-n Stufe]
[-t] -p PID
ionice [-c Klasse] [-n Stufe]
[-t] -p PGID
ionice [-c Klasse] [-n Stufe]
[-t] -p UID
ionice [-c Klasse] [-n Stufe]
[-t] Befehl [Argument] ...
Dieses Programm setzt oder ermittelt die E/A-Scheduling-Klasse und
-Priorität eines Prozesses. Falls keine Argumente oder nur -p
angegeben ist, fragt ionice die aktuelle E/A-Scheduling-Klasse und
-Priorität dieses Prozesses ab.
Wenn ein Befehl angegeben ist, führt ionice
diesen Befehl mit den übergebenen Argumenten aus. Falls keine
Klasse angegeben wird, dann wird der Befehl mit der
»Best-effort«-Scheduling-Klasse ausgeführt. Die
vorgegebene Prioritätsstufe ist 4.
Derzeit kann ein Prozess in eine dieser drei Scheduling-Klassen
eingeordnet werden:
Idle
Ein Programm, das mit der E/A-Priorität
»Idle« ausgeführt wird, erhält nur Zeit für
Festplattenzugriffe zugewiesen, wenn kein weiteres Programm dies für
einen bestimmten Zeitraum angefordert hat. Der Einfluss eines
Idle-E/A-Prozesses auf die normalen Systemaktivitäten sollte Null sein.
Diese Scheduling-Klasse akzeptiert kein Prioritätsargument. Derzeit ist
die Vergabe dieser Scheduling-Klasse einem gewöhnlichen Benutzer
erlaubt (seit Kernel 2.6.25).
Best-effort
Dies ist die effektive Scheduling-Klasse für jeden
Prozess, der keine spezifische E/A-Priorität angefordert hat. Diese
Klasse akzeptiert die Prioritäts-Argumente
0-7, wobei die
niedrigere Zahl eine höhere Priorität ausdrückt.
Programme, die mit der gleichen Best-Effort-Priorität laufen, werden im
Rundlauf-Verfahren bedient.
Beachten Sie, dass mit Kerneln älter als 2.6.26 ein
Prozess, der keine E/A-Priorität angefordert hat, formell
»none« als Scheduling-Klasse verwendet. Doch wird der
E/A-Scheduler solche Prozesse so betrachten, als gehörten sie der
Best-Effort-Klasse an. Die Priorität innerhalb der Best-Effort-Klasse
wird dynamisch aus der CPU-Nice-Stufe des Prozesses abgeleitet:
E/A-Priorität = (CPU-Nice-Klasse + 20) / 5.
Mit Kerneln der Version 2.6.26 oder neuer mit CFQ-E/A-Scheduler
erbt ein Prozess, der keine E/A-Priorität angefordert hat, dessen
CPU-Scheduling-Klasse. Die E/A-Priorität wird aus der CPU-Nice-Stufe
des Prozesses abgeleitet (wie auch in Kernels vor 2.6.26).
Realtime
Die Scheduling-Klasse »Realtime« hat
Vorrang vor anderen Prozessen bei Festplattenzugriffen, ganz gleich welche
anderen Vorgänge im System ablaufen. Deshalb sollte die Realtime-Klasse
mit gewisser Vorsicht verwendet werden, weil sie andere Prozesse regelrecht
»aushungern« kann. Wie auch bei der Best-Effort-Klasse sind 8
Prioritätsstufen verfügbar, welche angeben, wie groß die
Zeitscheibe ist, die ein angegebener Prozess in jedem Scheduling-Zeitfenster
erhält. Diese Scheduling-Klasse ist für einen
gewöhnlichen Benutzer ohne Administratorrechte verboten.
-c, --class Klasse
gibt den Namen oder die Nummer der gewünschten
Scheduling-Klasse an. »0« für keine, »1«
für Realtime, »2« für Best-Effort,
»3« für Idle.
-n, --classdata Stufe
gibt die Scheduling-Klassendaten an. Dies ist nur
wirksam, wenn die Klasse ein Argument akzeptiert. Für
»Realtime« und »Best-Effort« sind 0-7
möglich (als Prioritätsstufen) und »0«
repräsentiert die höchste Prioritätsstufe.
-p, --pid PID...
gibt die Prozesskennungen (PIDs) der laufenden Prozesse
an, für die die Scheduling-Parameter gesetzt oder ermittelt werden
sollen.
-P, --pgid PGID...
gibt die Prozessgruppenkennungen (PGIDs) der laufenden
Prozesse an, für die die Scheduling-Parameter gesetzt oder ermittelt
werden sollen.
-t, --ignore
ignoriert fehlgeschlagenes Setzen der angeforderten
Priorität. Falls ein Befehl angegeben wurde, wird dieser selbst
dann ausgeführt, wenn es nicht möglich war, die
gewünschte Scheduling-Priorität zu setzen. Dies kann bei
unzureichenden Zugriffsrechten oder alten Kernel-Versionen passieren.
-u, --uid UID...
gibt die Benutzerkennungen (UIDs) der laufenden Prozesse
an, für die die Scheduling-Parameter gesetzt oder ermittelt werden
sollen.
-h, --help
zeigt einen Hilfetext an und beendet das Programm.
-V, --version
zeigt Versionsinformationen an und beendet das
Programm.
Linux unterstützt E/A-Scheduling-Prioritäten und
-Klassen seit Version 2.6.13 mit dem CFQ-E/A-Scheduler.
•# ionice -c 3 -p 89
setzt den Prozess mit der PID 89 als Idle-E/A-Prozess.
•# ionice -c 2 -n 0 bash
führt »bash« als Best-Effort-Programm mit
höchster Priorität aus.
•# ionice -p 89 91
gibt die Klasse und Priorität der Prozesse mit den PIDs 89
und 91 aus.
Jens Axboe <jens@axboe.dk>, Karel Zak
<kzak@redhat.com>
Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem auf
<https://github.com/util-linux/util-linux/issues>.
Der Befehl ionice ist Teil des Pakets util-linux, welches
aus dem Linux-Kernel-Archiv
<https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen
werden kann.