iotop / ionice

Die CPU-Zuteilung unter Linux erfolgt durch einen Scheduler im Kernel, der anhand der Prioritäten der Prozesse, die Bedarf an Rechenzeit signalisiert haben, hunderte Male in der Sekunde entscheidet, wer als nächstes rechnen darf, und diesem Prozess die CPU "gibt". Dazu gibt es unter Linux die sogenannten Nice-ness-Werte; jeder Prozess hat einen Nice-ness-Wert von -20 bis +20, der seine Priorität wiederspiegelt. -20 ist höchste Priorität, +20 ist geringste Priorität. Die genaue Zuteilung der CPU-Ressourcen in Zeit-Anteilen oder Ähnlichem lässt sich damit nicht angeben, wohl aber verschiedene Prozesse zueinander in Verhältnis setzen. Neue Prozesse werden immer mit dem normalen Nice-ness-Wert 0 gestartet. Der Nice-ness-Wert kann mit den Kommandozeilen-Programmen "nice" (zum Starten von neuen Programmen mit bestimmtem Nice-ness-Wert) und "renice" (zum Ändern des Nice-ness-Wertes von laufenden Programmen) gesteuert werden.

Ein ähnliches Verfahren findet Anwendung, um über die Zuteilung der IO-Ressourcen (IO: Input/Output, gemeint ist Peripherie wie Festplatte, Netzwerk, ...) zu entscheiden. Hier gibt es 4 unterschiedliche IO-Scheduling-Klassen: 0/none: kein besonderes IO-Scheduling, 1/real time: besonders kurze Reaktionszeiten des Programms auf es betreffende IO-Anfragen, 2/best-effort: das "normale" IO-Scheduling, 3/idle: diese Programme kriegen nur dann IO-Ressourcen, wenn sonst kein anderes Programm IO-Ressourcen benötigt. Die Scheduling-Klassen 1 und 2 sehen zusätzlich IO-Prioritäten für die Prozesse vor, sodass auch unter Prozessen in der gleichen Scheduling-Klasse eine bedarfsgerechte Reihenfolge zur Zuteilung ermittelt bzw. eingestellt werden kann. Detailierte Informationen dazu finden sich in der Man-Page des Kommandozeilen-Tools "ionice":

man ionice

Das Kommandozeilen-Tool "ionice" erledigt für IO-Priorität das, was "nice" und "renice" für CPU-Priorität erledigen: Neue Programme in einer speziellen IO-Scheduling-Klasse und mit einer speziellen Priorität starten oder die Klasse und die Priorität eines bestehenden Prozesses verändern. Wie genau das geht, verrät ebenfalls die Man-Page.

Das Programm "iotop" muss aus den Repositories installiert werden:

sudo apt-get install iotop

Dieses Programm (das nur als "root" oder von einem Benutzer mit speziellen Rechten ausgeführt werden kann) zeigt an, welcher Prozess wie viel IO-Ressourcen in Anspruch nimmt. Auf diese Weise kann man herausfinden, ob ein spezieller Prozess übermäßig viel IO-Last erzeugt und so andere Prozesse oder gar das System beeinträchtigt.

Tags: | Linux Virtualisierung