Rechenzeit und Priorität: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „ Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf. Folgende Ken…“)
 
 
Zeile 1: Zeile 1:
 +
= Prozessmanagement =
  
Da auch bei Prozessen eine Gerechtigkeit herschen muss, muss eine Instanz
+
* Das Prozessmanagement der Bash sorgt dafür, dass alle Prozesse fair CPU-Zeit erhalten.
darüber entscheiden wie lange ein Prozess Rechenzeit verbrauchen darf.
+
* Der Kernel steuert die Planung durch den Scheduler, der entscheidet, welcher Prozess wann rechnen darf.
Folgende Kenndaten werden dazu benötigt
+
* Wichtige Parameter:
* clocktick = Zeiteinheit
+
** clocktick: Basiseinheit der Zeitscheiben
* n = Faktor über den Kernel einstellbar
+
** n: vom Kernel einstellbarer Faktor
* slice = n <nowiki>*</nowiki> clocktick
+
** slice: n * clocktick
* agingtime = weitere Zeiteinheit über den Kernel einstellbar
+
** agingtime: Zeiteinheit für Prioritätserhöhung von Prozessen
  
Es wird davon ausgegangen das der Prozess mit der niedrigsten Priorität gerade
+
* Prozesse werden nach Priorität (Nicewert) geplant.
rechnet. Pro clocktick erhöht sich die Priorität dieses Prozesses um eins.
+
* 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
  
Jetzt können 3 Situationen eintreten die alle dazu führen das der Scheduler
+
== Beispiel mit Kommandos ==
aufgerufen wird.
+
Starte einen Prozess mit erhöhter Nettigkeit:
 +
* nice -n 10 ./mein_skript.sh
  
# Prozess blockiert wegen einer Ausgabe oder Eingabe.
+
Ändere den Nice-Wert eines laufenden Prozesses:
# Gibt Rechenzeit freiwillig ab.
+
* renice -n 5 -p 1234
# Der Slice endet.
 
  
Der Aufruf des Schedulers bewirkt das der Prozess mit der niedrigsten Priorität
+
Prüfe die Priorität und CPU-Zeit der Prozesse mit top:
gescheduled wird, er also nun rechnen darf. Nach Ablauf der agingtime werden
+
* top
nun die Prozesse "gealtert". Das geschieht nach folgender Formel
 
  
Neue Priorität = Alte Priorität / 2 + Nicewert
+
Prüfe PID, Nicewert und Kommando aller Prozesse:
 +
* ps -eo pid,ni,cmd
  
Der User hat die Möglichkeit, über den sogenannten Nicewert den Grundwert für
+
== Hinweise ==
einen Prozess zu senken. Der Prozess braucht dann länger für seine Abarbeitung.
+
* Jeder Prozess läuft in einem Subprozess (Kindprozess) der Shell.
Er verhält sich somit netter zu den anderen Prozessen. Normale User können nur
+
* Der Exit-Status eines Kommandos kann mit '''echo $?''' überprüft werden.
netter werden, der Systemverwalter kann auch nicht netter (gemeiner) werden. Der
+
* Hintergrundprozesse werden mit '&' gestartet und laufen parallel.
Bereich liegt zwischen 19 (sehr nett) bis 0 (weniger nett) für die User, und 19 bis
+
* Der Scheduler sorgt für Gerechtigkeit: Prozesse mit niedriger Priorität „altern“ nach Agingtime.
-20 für root.
+
 
 +
== 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.

Aktuelle Version vom 18. Oktober 2025, 07:51 Uhr

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.