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.
Inhaltsverzeichnis
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.
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.
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.
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.