Zentralprozessor

So begrenzen Sie die CPU-Auslastung eines Prozesses unter Linux

So begrenzen Sie die CPU-Auslastung eines Prozesses unter Linux
Während Ihres Linux-Lebens müssen Sie gesehen haben, dass einige Prozesse alle CPU-Zyklen (90-99% CPU-Auslastung) in Anspruch nehmen, sodass Ihr Computer fast nicht mehr reagiert, bis er fertig ist. Das kann in Ordnung sein, wenn der Vorgang einige Sekunden dauert. Aber was ist, wenn es lange dauert? Es ist nicht sehr schön zu sitzen und minuten- und stundenlang auf seinen nicht reagierenden Computer zu schauen, richtig? Nun, Linux hat viele großartige Tools, um diese zu erstellen nicht sehr nett Prozesse zu nett Prozesse.

Sie können einstellen, wie viel CPU ein einzelner Prozess haben darf. Wenn der Prozess wirklich viel CPU-Leistung benötigt, können Sie ein paar Befehle ausführen, um ihm alle CPU-Zyklen im Leerlauf zu geben (CPU-Zyklen, die Sie nicht benötigen). Auf diese Weise müssen Sie nie lange sitzen und auf Ihren nicht reagierenden Computer starren.

In diesem Artikel zeige ich Ihnen, wie Sie die CPU-Auslastung eines Prozesses unter Linux begrenzen. Ich werde CentOS 7 in diesem Artikel verwenden. Aber jede moderne Linux-Distribution sollte funktionieren. Also lasst uns anfangen.

Einschränken der CPU-Auslastung mit nice and renice:

Unter Linux können die Prioritäten jedes laufenden Prozesses geändert werden. Sie können dem Prozess, der für Sie wichtiger ist, höhere Prioritäten setzen als einem Prozess, der Ihre CPU ohne triftigen Grund in Beschlag nimmt.

Jeder Prozess unter Linux hat einen schönen Wert. Der Wert von nice bestimmt, welcher Prozess höhere Prioritäten hat und welcher niedrigere. Nizza Wert kann zwischen -20 bis 19 . liegen. Ein Prozess mit dem schönen Wert -20 hat die höchste Priorität und verbraucht die meisten CPU-Zyklen. Ein Prozess mit dem nice-Wert 19 hat die niedrigste Priorität und verwendet die CPU, wenn kein anderer Prozess ihn nur verwendet.

Es gibt zwei Möglichkeiten, den Nice-Wert eines Prozesses festzulegen. Sie können entweder einen Prozess mit dem nett Befehl, um beim Starten des Prozesses einen schönen Wert zu setzen. Oder Sie verwenden die renice Befehl, um einen schönen Wert zu setzen, nachdem ein Prozess gestartet wurde.

Um beim Starten eines Prozesses einen schönen Wert festzulegen, führen Sie den Prozess wie folgt aus:

$ nice -n NICE_VALUE COMMAND_TO_RUN

HINWEIS: Hier NICE_VALUE kann alles sein von -20 bis 19 und COMMAND_TO_RUN ist ein Befehl, den Sie ausführen möchten, mit dem schönen Wert von NICE_VALUE.

Nehmen wir zum Beispiel an, Sie möchten die schlafen Befehl mit dem schönen Wert von 14. Führen Sie den Befehl wie folgt aus:

$ nice -n 14 schlaf 40000 &

Jetzt können Sie mit dem Befehl top überprüfen, ob der nice-Wert richtig eingestellt ist. Sie können alle Prozesse, die Sie (als Ihr Login-Benutzer) gestartet haben, mit dem folgenden Befehl auflisten:

$ ps -fl

Wie Sie sehen können, ist der nette Wert des Prozesses auf 14 . eingestellt.

Wenn Sie nun den Nice-Wert Ihrer bestehenden Prozesse ändern möchten, benötigen Sie nur die Prozess-ID (PID) des Prozesses, dessen Nice-Wert Sie ändern möchten. Du kannst den ... benutzen ps aux Befehl oder die oben Befehl, um die Prozess-ID oder PID zu finden.

Dann kannst du laufen renice Befehl wie folgt, um den nice-Wert eines bestehenden Prozesses zu ändern:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Wie Sie sehen, wird der schöne Wert des Prozesses mit PID 6422 geändert.

Einschränken der CPU-Auslastung mit CGROUPS:

Die vollständige Form von GRUPPEN ist CKontrolle GGruppen. Es handelt sich um eine Linux-Kernel-Funktion, die verwendet wird, um Ressourcen auf Prozessgruppen wie (CPU, Arbeitsspeicher, Berechtigungen und vieles mehr) unter Linux zu beschränken.

Sie müssen lediglich eine neue Prozessgruppe erstellen und Ihre Prozesse, auf die Sie Ressourcen beschränken möchten, zu dieser Gruppe hinzufügen limit. Einfach!

CGROUPS-Verwaltungstools werden standardmäßig nicht auf CentOS 7 installiert. Aber es ist im offiziellen Paket-Repository von CentOS 7 verfügbar.

Aktualisieren Sie zuerst den YUM-Paket-Repository-Cache mit dem folgenden Befehl:

$ sudo yum makecache

Installieren Sie nun die CGROUPS-Verwaltungstools mit dem folgenden Befehl:

$ sudo yum installiere libcgroup-tools

Jetzt drücken ja und drücke dann .

Es sollte installiert sein.

Sie können die CPU-Auslastung einer einzelnen Gruppe begrenzen. Sie können beispielsweise CGROUPS verwenden, um einen Prozess innerhalb einer CGROUP anzuweisen, beispielsweise 100 ms von 1000 ms (oder .1s von 1s) der CPU-Zeit.

Erstellen Sie zunächst eine CGROUP mit dem folgenden Befehl:

$ sudo cgcreate -g cpu:/cpulimit

HINWEIS: Hier, CPU-Begrenzung ist der Gruppenname, der die . steuert Zentralprozessor Verwendung.

Jetzt musst du einstellen Zentralprozessor.cfs_period_us und Zentralprozessor.cfs_quota_us Eigentum auf der CPU-Begrenzung Gruppe.

Für dieses Beispiel sollten 1000ms (Millisekunden) oder 1000000us (Mikrosekunden) auf set eingestellt werden Zentralprozessor.cfs_period_us -Eigenschaft und 100ms oder 100000us sollten auf die eingestellt werden Zentralprozessor.cfs_quota_us Eigentum.

Führen Sie die folgenden Befehle aus, um diese Eigenschaften auf den CPU-Begrenzung Gruppe:

$ sudo cgset -r cpu.cfs_period_us=1000000 CPU-Limit
$ sudo cgset -r cpu.cfs_quota_us=100000 CPU-Limit

Jetzt können Sie den folgenden Befehl ausführen, um zu überprüfen, ob alle Eigenschaften richtig eingestellt sind:

$ sudo cgget -g cpu:cpulimit

HINWEIS: Hier, CPU-Begrenzung ist der Name der CGROUP und Zentralprozessor ist die Ressource, die ich begrenze.

Wie du siehst, Zentralprozessor.cfs_period_us und Zentralprozessor.cfs_quota_us sind richtig eingestellt.

Nun, was auch immer Sie für einen Prozess hinzufügen CPU-Begrenzung CGROUP verwendet 1/10das (100000/1000000 = 1/10 = 0.1 = 10%) der gesamten CPU-Zyklen.

Um nun die CPU eines Prozesses zu begrenzen, starten Sie das Programm oder den Befehl mit cexec wie folgt:

$ sudo cgexec -g cpu:cpulimit YOUR_COMMAND

HINWEIS: Hier, YOUR_COMMAND können beliebige gültige Linux-Befehle sein.

Um zu beweisen, dass es tatsächlich funktioniert, führe ich zuerst den folgenden Befehl ohne CGROUPS und dann mit CGROUPS aus und zeige Ihnen die Ergebnisse.

$ dd if=/dev/zero of=out bs=1M

Wie Sie sehen, verwendet der Befehl ohne CGROUPS 90% der gesamten CPU.

Dann habe ich den gleichen Befehl mit CGROUPS wie folgt ausgeführt:

$ sudo cgexec -g cpu:cpulimit dd if=/dev/zero of=out bs=1M

Wie Sie sehen, beträgt die CPU-Auslastung maximal 10 %. Der Prozess verwendet nicht mehr als das.

So verwenden Sie CGROUPS, um die CPU-Auslastung eines Prozesses unter Linux zu begrenzen. Danke, dass du diesen Artikel gelesen hast.

Verweise:

[1] https://Zugang.roter Hut.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu

[2] https://linux.sterben.net/man/1/nett

[3] https://linux.sterben.net/mann/8/renice

So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...
Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...