Übersicht
In Umgebungen mit knappen Serverressourcen können Hintergrundaufgaben oder ressourcenintensive Batch-Skripte die Reaktionszeit kritischer Dienste verlangsamen. In diesem Artikel erfahren Sie praxisnahe Tipps, wie Sie mithilfe der Befehle nice und renice CPU-Scheduling-Prioritäten konfigurieren und die Systemstabilität gewährleisten.
1. Prozesspriorität (NI/PR) prüfen und htop-Monitoring-Umgebung einrichten
Für die praktische Überwachung der Prozessprioritäten installieren wir die unverzichtbaren Pakete htop und procps.

Der Befehl ps dient zur Anzeige detaillierter Informationen sowie der Prioritätswerte von Prozessen, die aktuell auf dem System ausgeführt werden.
In der Ausgabe steht NI für den benutzerdefinierbaren nice-Wert und PRI für die Priorität, die der Kernel-Scheduler tatsächlich zugewiesen hat.
⚙️ [Wichtige Optionen]
-e : Wählt alle im System ausgeführten Prozesse aus und zeigt sie an.-o : Legt benutzerdefinierte Spalten für die Ausgabe fest (z. B. pid, ni, pri, comm).-u : Filtert und zeigt nur Prozesse an, die einem bestimmten Benutzer gehören.-p : Fragt nur Prozesse mit den angegebenen PIDs (Prozess-IDs) ab.-f : Gibt eine vollständige Formatliste mit allen Details zu den Prozessen aus.

2. Hintergrundaufgaben mit niedriger Priorität mittels nice ausführen
Um Testdateien für diese Übung sicher zu erstellen und zu verwalten, legen wir ein temporäres Arbeitsverzeichnis an und wechseln in dieses Verzeichnis.

Wir führen die Erstellung einer großen Datei im Hintergrund (&) mit dem Befehl nice aus und setzen den nice-Wert auf 10, um die Priorität zu senken und CPU-Ressourcen für andere Prozesse freizugeben.

Durch die Kombination von ps und grep prüfen wir die PID des laufenden dd-Prozesses und verifizieren, ob der nice-Wert (NI) wie beabsichtigt gesetzt wurde.

3. Priorität bereits laufender Prozesse mit renice in Echtzeit anpassen
Um das Ändern von Prioritäten in Echtzeit zu demonstrieren, starten wir einen sleep-Prozess mit einer Dauer von 300 Sekunden im Hintergrund (&).

Mithilfe der speziellen Umgebungsvariable $!, die die Prozess-ID (PID) des zuletzt im Hintergrund gestarteten Prozesses enthält, speichern wir diesen Wert in der Umgebungsvariablen TARGET_PID.

Mit dem Befehl ps überprüfen wir den aktuellen nice-Wert (NI) des Zielprozesses und stellen fest, dass er mit dem Standardwert 0 läuft.

Mit dem Befehl renice ändern wir den nice-Wert des bereits laufenden Zielprozesses auf 15, um dessen Priorität zu verringern.
Anhand der Ausgabe lässt sich nachvollziehen, dass die bisherige Priorität (old priority 0) erfolgreich auf die neue Priorität (new priority 15) aktualisiert wurde.

Mit dem Befehl ps rufen wir den Zielprozess erneut ab, um zu bestätigen, dass der nice-Wert (NI) sofort auf 15 übernommen wurde.

Nach Abschluss der Übung beenden wir den Testprozess zwangsweise (kill -9), um die Systemressourcen wieder freizugeben.

4. Hohe Priorität (negativer nice-Wert) mit root-Rechten zuweisen und Hinweise dazu
Um einen negativen nice-Wert (-5) festzulegen, der von regulären Benutzern nicht konfiguriert werden kann, starten wir einen Prozess mit erhöhter Priorität im Hintergrund (&) unter Verwendung von sudo-Administratorrechten.
Prozesse mit einem negativen nice-Wert erhalten beim CPU-Scheduling eine höhere Ausführungspriorität und können somit bevorzugt Systemressourcen beanspruchen.

Mit dem Befehl ps fragen wir die laufenden Prozesse ab, um zu verifizieren, ob der nice-Wert (NI) des Zielprozesses (sleep) ordnungsgemäß auf -5 gesetzt wurde.
In der Ausgabe ist ersichtlich, dass im Gegensatz zu regulären Standardprozessen (0) ein negativer nice-Wert (-5) konfiguriert wurde und der Prozess mit hoher Priorität ausgeführt wird.

Bisher haben wir uns angesehen, wie sich Prozessprioritäten mit dem nice-Befehl anpassen lassen – eine nützliche Maßnahme, wenn ein Linux-Server ins Stocken gerät.
Weisen Sie bei knappen Serverressourcen die jeweils passende Priorität zu, um Ihr System deutlich stabiler und reibungsloser zu betreiben.