So setzen Sie Prozessprioritäten mit nice and renice unter Linux

Mit den Befehlen nice und renice können Sie feinabstimmen, wie der Kernel Ihre Prozesse behandelt, indem Sie deren Prioritäten anpassen. Lesen Sie dieses Tutorial, um zu erfahren, wie Sie sie in Linux- und Unix-ähnlichen Betriebssystemen wie macOS verwenden.

Alles eine Frage des Prozesses

In Ihrem Linux- oder Unix-ähnlichen Computer laufen viele Prozesse, noch bevor Sie die Anwendung starten, die Sie verwenden möchten. Die meisten dieser Prozesse sind wichtige Elemente von Linux selbst oder unterstützende Prozesse für Ihre grafische Desktop-Umgebung. Hinter den Kulissen passiert viel. Natürlich gibt es nur eine begrenzte Anzahl von Systemressourcen und CPU-Zeiten. Der Linux-Kernel ist der Controller für all diese Prozesse.

Es ist der Kernel, der entscheiden muss, welche Prozesse gerade Aufmerksamkeit und Ressourcen erhalten und welche warten müssen. Der Kernel jongliert ständig mit Prozessen und Prioritäten, um sicherzustellen, dass der Computer so reibungslos wie möglich läuft und alle Prozesse ihren angemessenen Anteil erhalten. Einige Prozesse werden bevorzugt behandelt. Sie sind für den allgemeinen Betrieb des Computers so wichtig, dass ihre Bedürfnisse beispielsweise vor Ihrem Browser stehen müssen.

Der schöne Wert

Eines der Kriterien, die verwendet werden, um zu bestimmen, wie der Kernel einen Prozess behandelt, ist der nette Wert. Jeder Prozess hat einen schönen Wert. Der nette Wert ist eine ganze Zahl im Bereich von -19 bis 20. Alle Standardprozesse werden mit einem schönen Wert von Null gestartet.

  So spielen Sie Metro Exodus unter Linux

Der Trick dabei ist, dass Ihr Prozess umso besser zu den anderen Prozessen ist, je höher der Nice-Wert ist. Mit anderen Worten, ein hoher nice-Wert sagt dem Kernel, dass dieser Prozess gerne wartet. Eine negative Zahl ist das Gegenteil von nett. Je größer der negative nette Wert, desto egoistischer ist der Prozess. Es versucht, so viel CPU-Zeit wie möglich zu erhalten, ohne Rücksicht auf die anderen Prozesse.

Wir können den nice-Befehl verwenden, um den nice-Wert zu setzen, wenn a Prozess wird gestartet und wir können renice verwenden, um den netten wert anzupassen eines laufenden Prozesses.

Das nette Kommando

Wir können den nice-Befehl verwenden, um den nice-Wert für ein Programm beim Starten anzupassen. Dadurch können wir die Priorität, die der Kernel dem Prozess einräumt, relativ zu den anderen Prozessen erhöhen oder verringern.

Nehmen wir an, ein Programmierer hat ein Programm namens ackermann geschrieben. Dies berechnet Ackerman-Funktionen. Es ist CPU- und speicherintensiv. Der Programmierer kann das Programm mit dem folgenden Befehl starten:

./ackermann

Wir können den Befehl top verwenden, um das laufende Programm anzuzeigen.

top

Die Details des ackermann-Programms sehen wir oben. Der nette Wert ist die Zahl in der „NI-Spalte“. Es wurde auf Null gesetzt, wie wir es erwarten würden.

Lass es uns neu starten und dieses Mal weniger anspruchsvoll machen. Einen schönen Wert von 15 setzen wir für das Ackermann-Programm wie folgt. Geben Sie nice, ein Leerzeichen, -15, ein weiteres Leerzeichen und dann den Namen des Programms ein, das Sie starten möchten. In unserem Beispiel verwendet unser fiktiver Programmierer ./ackermann.

nice -15 ./ackermann

Beachten Sie, dass die „-15“ nicht minus fünfzehn ist. Es ist positiv fünfzehn. Das „-“ ist erforderlich, um nice mitzuteilen, dass wir einen Parameter übergeben. Um eine negative Zahl anzugeben, müssen Sie zwei „-“-Zeichen eingeben.

  So spielen Sie Nintendo DS-Spiele unter Linux mit MelonDS

Wenn wir jetzt wieder ganz oben anfangen, sehen wir die Verhaltensänderung von Ackermann.

top

Mit einem schönen Wert von 15 verbraucht ackermann nicht die meiste CPU-Zeit. GNOME und Rhythmbox verwenden beide mehr. Wir haben Ackermann etwas gezügelt.

Machen wir nun das Gegenteil und geben ackermann einen negativen netten Wert. Beachten Sie die Verwendung von zwei „-“-Zeichen. Um eine Anwendung egoistischer und weniger nett zu machen, müssen Sie sudo verwenden. Jeder kann seine Anwendung schöner machen, aber nur Superuser können eine selbstsüchtiger machen.

sudo nice --10 ./ackermann

Lassen Sie uns nach oben laufen und sehen, was das für einen Unterschied gemacht hat.

top

Diesmal hat Ackermann einen schönen Wert von -10. Es ist wieder an der Spitze und verbraucht mehr CPU-Zeit als zuvor.

Das Renice-Kommando

Mit dem Befehl renice können wir den nice-Wert eines laufenden Prozesses anpassen. Wir müssen es nicht stoppen und mit nice neu starten. Wir können im Handumdrehen einen neuen Wert festlegen.

  So konvertieren Sie PNG in JPG unter Linux

Der Befehl renice verwendet die Prozess-ID oder PID des Prozesses als Befehlszeilenparameter. Wir können die Prozess-ID entweder aus der Spalte „PID“ in top extrahieren, oder wir können ps und grep verwenden, um sie wie folgt für uns zu finden. Offensichtlich geben Sie statt dave den Namen Ihres Benutzers und statt ackermann den Namen des Prozesses ein, an dem Sie interessiert sind.

ps -eu dave | grep ackermann

Da wir nun die PID haben, können wir diese mit Renice verwenden. Wir werden Ackermann mit einem netten Wert von fünf auf ein netteres Verhalten zurücksetzen. Um den nice-Wert für einen laufenden Prozess zu ändern, müssen Sie sudo verwenden. Beachten Sie, dass der Parameter 5 kein „-“ enthält. Sie brauchen keine für positive Zahlen und Sie brauchen nur eine, nicht zwei für negative Zahlen.

sudo renice -n 5 2339

Wir bekommen eine Bestätigung, dass Renice den netten Wert geändert hat. Es zeigt uns den alten Wert und den neuen Wert an.

Der Kernel leistet normalerweise hervorragende Arbeit bei der Handhabung von Prioritäten und der Verteilung von CPU-Zeit und Systemressourcen. Wenn Sie jedoch eine lange, CPU-intensive Aufgabe ausführen müssen und es Ihnen egal ist, wann sie abgeschlossen ist, wird Ihr Computer etwas flüssiger, wenn Sie einen höheren Wert für diese Aufgabe einstellen. Das wird für alle schöner.