LPIC101/103.6 Prozess-Ausführungsprioritäten ändern
Allgemeines
- Der Begriff Prozeß (engl. process) bezeichnet ein Programm, das gerade geladen ist und (meist) läuft.
- Manchmal möchten Sie die Priorität eines Prozesses ändern. Ein Prozess, der für Sie sehr wichtig ist, kann z.B. ausgeführt werden und sie möchten Ihn schnell beenden.
- Ein normaler Benutzer kann allerdings einem Prozess lediglich eine niedrigere Priorität zuordnen.
- Damit soll verhindert werden, dass Benutzer, die ihre eigene Arbeit als besonders wichtig einstufen, das ganze System lahmlegen.
Liste wichtiger Dateien
nice
- nice ist ein Befehl von Unix-ähnlichen Betriebssystemen.
- Mit nice ist es möglich, ein Kommando mit einer bestimmten Priorität zu starten, sodass der dann ausgeführte Prozess im Gegensatz zu anderen Prozessen mehr oder weniger CPU-Zeit erhält.
Zum Beispiel haben wir den folgenden Prozess ausgeführt:
sleep 1000000000&
Und bestätigte die Priorität mit dem folgenden Befehl:
ps ax -o pid,ni,cmd | grep sleep
1522 0 sleep 1000000000 1547 12 sleep 1000000000 1574 0 sleep 1000000000 1576 0 grep sleep michel@debian:~$ nice -n 10 sleep 1000000000&
- In beiden Fällen wird der Editor nano mit einem positiven Nice-Wert von 10 gestartet.
- Der Strich in der zweiten Zeile ist also kein Minus, sondern dient der Einleitung der Option.
- Wenn Sie einen negativen Nice-Wert verwenden wollen, um die Ausführungspriorität eines Programms zu erhöhen, können Sie folgende Kommandos verwenden:
michel@debian:~$ nice -n -10 sleep 1000000000& oder: michel@debian:~$ nice --10 sleep 1000000000&
Mit dem Kommando:
michel@debian:~$ ps ax -o pid,ni,cmd | grep sleep
sieht man ,dass das Prioritäts-Scheduling auf die zweite Spalte. In die erste Spalte steht die auführungsnummer(zum beispiel 1522) des Prozesses.
1522 0 sleep 1000000000 1547 12 sleep 1000000000 1574 0 sleep 1000000000 1577 10 sleep 1000000000 1579 0 grep sleep
Die zweite Zeile enthält jetzt zwei Striche. Der erste Strich leitet die Option ein, und der zweite ist diesmal ein Minuszeichen.
renice
- renice ändert das Prioritäts-Scheduling eines oder mehrerer laufender Prozesse.
- Das erste Argument ist der zu verwendende Prioritäts-Wert.
- Die anderen Argumente werden als Prozesskennungen interpretiert (Vorgabe), Prozessgruppenkennungen, Benutzerkennungen oder Benutzernamen.
- Das Anwenden von renice auf eine Prozessgruppe beeinflusst das Scheduling aller Prozesse in dieser Prozessgruppe gleichermaßen.
- Das Anwenden von renice auf einen Benutzer ändert das Prioritäts-Scheduling aller Prozesse, die diesem Benutzer gehören.
michel@debian:~$ renice -n -7 1547
1547 (process ID) old priority -7, new priority 12
- Hier ist also der Strich ein Minus und keine Einleitung für eine Option.
- Mit der Option -u (hier wiederum ist der Strich unabdingbar) können Sie alle Prozesseeines einzelnen Benutzers gleichzeitig beeinflussen.
- Die Syntax ist ansonsten mit identisch, die man auch bei der Manipulation eines Prozesses benutzen würde.
top und ps
top und ps können die prioritäten überprüfen:
- ps (für process status) ist ein Unix-Kommando, das eine Liste aller Prozesse, welche momentan laufen oder sich im Zombie-Status befinden, auf dem Bildschirm ausgibt.
michel@debian:~$ ps ax -o pid,ni,cmd | grep sleep
- top ist ein Befehl in den meisten Unix-ähnlichen Betriebssystemen, der eine ständig aktualisierte Liste der aktuell laufenden Prozesse des Systems ausgibt.
- Dabei zeigt top auch die Load der CPU, Speicherverbrauch, sowie etliche andere Informationen an,Um die tatsächliche Priorität eines Prozesses und den Wert für nice zu ermitteln,benötigen Sie das Programm top.