Steuern Sie die CPU-Auslastung des Prozesses mit nice und cpulimit
Egal wie schnell Ihr Linux-Rechner ist, es wird immer einige Aufgaben geben, die viel CPU-Zeit verbrauchen. Von der Videokodierung bis zur Ausführung mathematischer Modelle kann alles dazu führen, dass die CPU zu 100 % läuft. Das ist in Ordnung, wenn die Maschine nichts anderes tut. Handelt es sich jedoch um Ihren Hauptdesktop oder wird er als Server verwendet, führt die Ausführung einer Aufgabe, die Ihre CPU maximal beansprucht, dazu, dass der Computer träge und schwer zu bedienen ist. Das Schöne an einem Multitasking-Betriebssystem ist, dass die Maschine nicht einfriert, da sie immer CPU-Zeit für andere Aufgaben einplant und Dinge wie der Desktop weiterhin funktionieren, aber viel langsamer. Der Planer kann nicht erkennen, dass die CPU-intensive Aufgabe mit einer niedrigeren Priorität ausgeführt werden soll oder dass ihre CPU-Zeit begrenzt werden soll. Es gibt jedoch einige Tools, mit denen sich die Prozess-CPU-Auslastung für diese ressourcenhungrigen Aufgaben steuern lässt.
Um eine CPU-intensive Aufgabe zu emulieren, können wir ein Tool namens Matho-Prime verwenden, das eine Liste von Primzahlen generiert. Wenn Sie es auffordern, eine ausreichend große Liste zu erstellen, wird die CPU während des Betriebs maximal ausgelastet. Um Matho-Prime auf Ubuntu oder einem Raspberry Pi zu installieren, verwenden Sie:
sudo apt-get install mathomatic-primesStarten wir einfach die Aufgabe und sehen uns die CPU-Auslastung an:
Matho-Primzahlen 0 9999999999 > p.txt &Dies weist Matho-Primes an, eine Liste von Primzahlen von null bis neun Milliarden neunhundertneunundneunzig Millionen neunhundertneunundneunzigtausendneunhundertneunundneunzig zu erstellen! Die Ausgabe wird in die Datei p.txt umgeleitet. Das kaufmännische Und am Ende weist die Shell an, das Programm im Hintergrund auszuführen, was bedeutet, dass Sie direkt nach dem Start der Aufgabe zur Eingabeaufforderung zurückkehren.
Führen Sie nun den Befehl „top“ aus und beobachten Sie, wie viel CPU der Primzahlengenerator verbraucht.
Lassen Sie uns nun diese Aufgabe beenden und überlegen, wie wir sie mit einer niedrigeren Priorität starten können. Beenden Sie oben, indem Sie q drücken, geben Sie dann fg ein, um Matho-Primzahlen in den Vordergrund zu holen, und drücken Sie dann „Strg + C“, um das Beenden des Programms zu erzwingen.
Starten Sie nun das Programm erneut, fügen Sie aber am Anfang des Befehls das Wort nice hinzu:
schöne Matho-Primzahlen 0 9999999999 > p.txt &nice ist ein Tool, das Linux anweist, diese Aufgabe mit einer niedrigeren Priorität einzuplanen. Die Nettigkeit reicht von -20 (günstigste Planung) bis 19 (ungünstigste Planung). Standardmäßig plant nice die Aufgabe mit einem Niceness-Wert von 10. Standardmäßig werden normale Aufgaben mit einem Niceness-Wert von Null gestartet. Dies bedeutet, dass eine Aufgabe mit einem Niceness-Wert von 10 als eine niedrigere Priorität angesehen wird und seltener CPU-Ressourcen erhält.
Wir können jetzt einen zweiten dieser Primzahlengeneratoren starten, um andere Aufgaben zu emulieren, die Sie auf Ihrem Computer ausführen möchten (z. B. Surfen im Internet oder Schreiben eines Dokuments). Dieser wird normal nett sein, da die Verwendung des Desktops eine höhere Priorität haben sollte als die Ausführung des Primzahlengenerators.
Matho-Primzahlen 0 9999999999 > p2.txt &Beachten Sie, dass die Ausgabe dieser Datei an p2.txt umgeleitet wird. Die Ausgabe von oben sieht etwa so aus:
Wie Sie sehen, erhält der Prozess mit der höheren Feinheit weniger CPU-Zeit. Das heißt, wenn Sie eine CPU-intensive Aufgabe mit nice starten, wird Ihr Rechner dadurch nicht träge oder langsamer.
cpulimit
Es gibt einen weiteren Befehl namens „cpulimit“, der, anstatt die Planungspriorität zu ändern, einen Prozess vorübergehend anhält, um sicherzustellen, dass er die gewünschte CPU-Auslastung nicht überschreitet.
Um es zu installieren, geben Sie Folgendes ein:
sudo apt-get install cpulimitFühren Sie nun den CPU-intensiven Primzahlengenerator erneut aus und notieren Sie seine PID-Nummer mit diesem Befehl:
Die erste Spalte der Ausgabe ist die PID. Begrenzen Sie nun die CPU-Auslastung dieses Prozesses wie folgt:
sudo cpulimit -b -l 50 -p 16299Wobei 16299 die PID des Matho-Primzahlen-Prozesses ist. Ein Blick mit Oberteil zeigt etwa Folgendes:
Weitergehen
Es gibt einen Begleitbefehl zu nice namens renice, der die Niceness eines bestehenden Prozesses ändert. Versuchen Sie, top oder ps mit grep zu verwenden, um die PID eines Prozesses abzurufen, und verwenden Sie renice +19 16299, um die Priorität auf den niedrigstmöglichen Wert zu setzen (wobei 16299 die PID des Prozesses ist).
Fühlen Sie sich frei, die Diskussion im Kommentar unten zu ergänzen.
Index
Schreibe einen Kommentar