In diesem Schritt lernen Sie, wie Sie die Scheduling-Priorität von Prozessen mithilfe der Befehle nice und renice beeinflussen können. Der nice-Wert (auch als Niceness bekannt) eines Prozesses gibt seine Priorität für den Linux-Scheduler an. Ein niedrigerer nice-Wert (negativer) bedeutet eine höhere Priorität, während ein höherer nice-Wert (positiver) eine niedrigere Priorität bedeutet. Der Bereich für nice-Werte liegt typischerweise zwischen -20 (höchste Priorität) und 19 (niedrigste Priorität), wobei 0 der Standardwert ist.
-
Starten Sie mehrere Instanzen von sha1sum /dev/zero & und starten Sie dann eine zusätzliche Instanz mit einem nice-Level von 10.
Wir starten mehrere sha1sum-Prozesse, um ein ausgelastetes System zu simulieren. Dann starten wir einen mit einer absichtlich niedrigeren Priorität (höherer nice-Wert), um die Auswirkungen zu beobachten.
Starten Sie zuerst drei reguläre Instanzen (passen Sie sie bei Bedarf an Ihre CPU-Kernanzahl an, aber mindestens so viele wie virtuelle Prozessoren, um Konflikte zu erzeugen):
for i in {1..3}; do sha1sum /dev/zero & done
Starten Sie als Nächstes die vierte Instanz mit einem nice-Level von 10. Dieser Prozess hat eine niedrigere Priorität im Vergleich zu den anderen.
nice -n 10 sha1sum /dev/zero &
Sie sehen eine ähnliche Ausgabe wie diese, die die PIDs der Hintergrundprozesse anzeigt:
[1] 5443
[2] 5444
[3] 5445
[4] 5446
(Hinweis: Die PID-Werte in Ihrer Ausgabe variieren.)
-
Verwenden Sie die Befehle ps und pgrep, um die PID, den Prozentsatz der CPU-Auslastung, den nice-Wert und den Ausführungsnamen für jeden Prozess anzuzeigen.
Beobachten Sie die Spalten %CPU und NI. Die Instanz mit dem nice-Wert von 10 sollte einen geringeren Prozentsatz der CPU-Auslastung anzeigen als die anderen Instanzen, da der Scheduler ihr weniger CPU-Zeit gibt.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Suchen Sie nach dem Prozess mit dem NI-Wert 10. Sein %CPU sollte deutlich niedriger sein als die anderen.
PID %CPU NI COMMAND
5443 56.8 0 sha1sum
5444 58.0 0 sha1sum
5445 56.5 0 sha1sum
5446 6.7 10 sha1sum
(Hinweis: Die genauen %CPU-Werte variieren je nach Systemauslastung und Kernanzahl, aber der Prozess mit nice 10 sollte einen geringeren Anteil haben.)
-
Verwenden Sie den Befehl sudo renice, um den nice-Level eines der regulären Prozesse auf 5 zu ändern.
Mit dem Befehl renice können Sie den nice-Wert eines bereits laufenden Prozesses ändern. Wir demonstrieren dies, indem wir einen der regulären Prozesse (nice-Wert 0) in einen nice-Wert von 5 ändern.
Ermitteln Sie zunächst die PID eines der sha1sum-Prozesse, der einen nice-Wert von 0 hat, aus der Ausgabe des vorherigen ps-Befehls. Verwenden wir den ersten aus dem obigen Beispiel (PID 5443).
sudo renice -n 5 <PID_of_regular_process>
Ersetzen Sie <PID_of_regular_process> durch die tatsächliche PID, die Sie identifiziert haben. Zum Beispiel:
sudo renice -n 5 5443
Sie sollten eine Ausgabe sehen, die die Prioritätsänderung bestätigt:
5443 (process ID) old priority 0, new priority 5
-
Wiederholen Sie die Befehle ps und pgrep, um den CPU-Prozentsatz und den nice-Level anzuzeigen.
Beobachten Sie die Änderung der CPU-Auslastung für den Prozess, dessen nice-Wert Sie geändert haben. Der Prozess mit dem nice-Wert 5 sollte jetzt eine etwas geringere CPU-Auslastung im Vergleich zu den Prozessen mit dem nice-Wert 0 aufweisen, aber höher als der Prozess mit dem nice-Wert 10.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Sie sollten sehen, dass der NI-Wert für den geänderten Prozess jetzt 5 ist und seine CPU-Auslastung sein neues Prioritätsniveau widerspiegelt.
PID %CPU NI COMMAND
5443 55.4 5 sha1sum
5444 67.2 0 sha1sum
5445 67.1 0 sha1sum
5446 7.5 10 sha1sum
(Hinweis: Die genauen %CPU-Werte variieren, aber Sie sollten beobachten, dass Prozesse mit niedrigeren nice-Werten (höherer Priorität) mehr CPU-Zeit erhalten.)