Rechenzeit und Priorität

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Prozessmanagement

  • Das Prozessmanagement der Bash sorgt dafür, dass alle Prozesse fair CPU-Zeit erhalten.
  • Der Kernel steuert die Planung durch den Scheduler, der entscheidet, welcher Prozess wann rechnen darf.
  • Wichtige Parameter:
    • clocktick: Basiseinheit der Zeitscheiben
    • n: vom Kernel einstellbarer Faktor
    • slice: n * clocktick
    • agingtime: Zeiteinheit für Prioritätserhöhung von Prozessen
  • Prozesse werden nach Priorität (Nicewert) geplant.
  • Die Priorität wird nach folgender Formel angepasst:
Neue Priorität = Alte Priorität / 2 + Nicewert
  • Der Nicewert beeinflusst, wie „nett“ ein Prozess gegenüber anderen ist:
    • Benutzer: 0 (Standard) bis 19 (netter)
    • Root: -20 (unfreundlich) bis 19 (nett)
  • Der Scheduler wird aufgerufen, wenn:
    • Ein Prozess auf Eingabe/Ausgabe blockiert
    • Ein Prozess freiwillig Rechenzeit abgibt
    • Die Zeitscheibe (slice) abläuft

Beispiel mit Kommandos

Starte einen Prozess mit erhöhter Nettigkeit:

  • nice -n 10 ./mein_skript.sh

Ändere den Nice-Wert eines laufenden Prozesses:

  • renice -n 5 -p 1234

Prüfe die Priorität und CPU-Zeit der Prozesse mit top:

  • top

Prüfe PID, Nicewert und Kommando aller Prozesse:

  • ps -eo pid,ni,cmd

Hinweise

  • Jeder Prozess läuft in einem Subprozess (Kindprozess) der Shell.
  • Der Exit-Status eines Kommandos kann mit echo $? überprüft werden.
  • Hintergrundprozesse werden mit '&' gestartet und laufen parallel.
  • Der Scheduler sorgt für Gerechtigkeit: Prozesse mit niedriger Priorität „altern“ nach Agingtime.

Aufgaben

  • Starte ein Skript mit Nicewert 10 und prüfe die CPU-Zeit mit top.
  • Ändere den Nicewert eines laufenden Prozesses und beobachte die Änderung.
  • Erstelle einen Hintergrundprozess mit '&' und überwache ihn mit ps.
  • Starte mehrere Prozesse mit unterschiedlichen Nicewerten und beobachte, wie der Scheduler die CPU-Zeit verteilt.