Rechenzeit und Priorität: Unterschied zwischen den Versionen
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…“ |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
= 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 | ** clocktick: Basiseinheit der Zeitscheiben | ||
* n | ** n: vom Kernel einstellbarer Faktor | ||
* slice | ** slice: n * clocktick | ||
* agingtime | ** 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 | |||
Der | == 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. | |||
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.