Egal wie schnell Ihre Linux-Maschine ist, es wird immer einige Aufgaben geben, die viel CPU-Zeit verbrauchen. Alles von der Videokodierung bis zum Ausführen mathematischer Modelle kann dazu führen, dass die CPU zu 100% läuft. Dies ist in Ordnung, wenn die Maschine nichts anderes tut. Aber wenn es sich um Ihren Hauptdesktop handelt oder es als Server verwendet wird, führt das Ausführen einer Task, die Ihre CPU auslastet, dazu, dass die Maschine schwerfällig und schwer zu bedienen ist. Die Schönheit eines Multitasking-Betriebssystems ist, dass die Maschine nicht einfriert, da sie immer CPU-Zeit für andere Aufgaben einplant und Dinge wie der Desktop immer noch funktionieren, aber viel langsamer. Der Scheduler hat keine Möglichkeit zu wissen, dass die CPU-intensive Task mit einer niedrigeren Priorität ausgeführt werden soll oder um die CPU-Zeit zu begrenzen. Es gibt jedoch einige Tools, die verwendet werden können, um die Prozess-CPU-Nutzung für diese ressourcenhungrigen Aufgaben zu steuern.

Um eine CPU-intensive Aufgabe zu emulieren, können wir ein Werkzeug namens matho-prime das eine Liste von Primzahlen generiert. Wenn Sie darum bitten, eine ausreichend große Liste zu erstellen, wird die CPU während der Arbeit maximal ausgelastet. Um matho-prime auf Ubuntu oder einem Raspberry Pi zu installieren, matho-prime :

 Sudo apt-get installieren Mathe-Primzahlen 

Lass uns einfach die Aufgabe starten und die CPU-Auslastung sehen:

 Mathe-Primzahlen 0 9999999999> p.txt & 

Das sagt matho-primes, um eine Liste von Primzahlen von null bis neun Milliarden neunhundertneunundneunzig Millionen neunhundertneunundneunzigtausendneunhundertneunundneunzig zu erzeugen! Die Ausgabe wird in die Datei p.txt umgeleitet. Das kaufmännische Und am Ende teilt der Shell mit, dass das Programm im Hintergrund ausgeführt werden soll. Das bedeutet, dass Sie direkt nach dem Start der Aufgabe zur Eingabeaufforderung zurückkehren.

Führen Sie nun den top Befehl aus und beachten Sie die CPU-Menge, die vom Primzahlgenerator verwendet wird.

Lassen Sie uns nun diese Aufgabe beenden und schauen, wie wir sie mit einer niedrigeren Priorität starten können. matho-primes den matho-primes mit der matho-primes q und matho-primes fg, um matho-primes in den Vordergrund zu bringen. matho-primes dann "Strg + C", um das Programm zu beenden.

Starten Sie nun das Programm erneut, aber am Anfang des Befehls fügen Sie das Wort nice :

 nette Mathe-Primzahlen 0 9999999999> p.txt & 

nice ist ein Tool, das Linux anweist, diese Aufgabe mit einer niedrigeren Priorität zu planen. Die Freundlichkeit reicht von -20 (günstigste Planung) bis 19 (ungünstigste). Standardmäßig wird nice die Aufgabe mit einer Helligkeit von 10 einplanen. Standardmäßig werden normale Aufgaben mit einer Nichtigkeit von Null gestartet. Das bedeutet, dass eine Aufgabe mit einer Priorität von 10 als weniger wichtig angesehen wird und weniger CPU-Ressourcen erhält.

Wir können nun einen zweiten Primzahlengenerator starten, um andere Aufgaben zu simulieren, die Sie auf Ihrem Rechner ausführen möchten (wie das Surfen im Internet oder das Schreiben eines Dokuments). Dieser wird eine normale Nettigkeit haben, da die Verwendung des Desktops eine höhere Priorität haben sollte als die Ausführung des Primzahlgenerators.

 Mathe-Primzahlen 0 9999999999> p2.txt & 

Beachten Sie, dass die Ausgabe von dieser Datei zu p2.txt umgeleitet p2.txt . Die Ausgabe von top sieht ungefähr so ​​aus:

Wie Sie sehen können, erhält der Prozess mit der höheren Nettigkeit weniger CPU-Zeit. Dies bedeutet, dass, wenn Sie eine CPU-intensive Aufgabe mit nice starten, Ihre Maschine nicht träge wird oder langsam reagiert.

cpulimit

Es gibt einen weiteren Befehl mit dem Namen "cpulimit", der statt der Änderung der Planungspriorität vorübergehend einen Prozess pausiert, um sicherzustellen, dass die gewünschte CPU-Auslastung nicht überschritten wird.

Um es zu installieren, geben Sie Folgendes ein:

 sudo apt-get installieren cpulimit 

Führen Sie nun den CPU-intensiven Primzahlgenerator erneut aus und notieren Sie sich die PID-Nummer mit diesem Befehl:

 ps | Grep Mathe-Prime 

Die erste Spalte der Ausgabe ist die PID. Beschränken Sie nun die CPU-Nutzung dieses Prozesses wie folgt:

 sudo cpulimit -b -l 50 -p 16299 

Wobei 16299 die PID des matho-primes Prozesses ist. Ein Look mit top wird etwa so aussehen:

Weitergehen

Es gibt einen Companion-Befehl namens renice der die Nettigkeit eines vorhandenen Prozesses ändert. Probieren Sie die Verwendung von top oder ps mit grep, um die PID eines Prozesses zu erhalten, und verwenden Sie renice +19 16299, um die Priorität auf den niedrigsten möglichen renice +19 16299 zu setzen (wobei 16299 die PID des Prozesses ist).

Fühlen Sie sich frei, die Diskussion im Kommentar unten hinzuzufügen.