Website-Suche

Begrenzen der CPU-Auslastung eines Prozesses in Linux mit dem CPULimit Tool


In einem früheren Beitrag haben wir CPUTool zum Begrenzen und Steuern der CPU-Auslastung von Prozessen in Linux erläutert. Es ermöglicht einem Systemadministrator, die Ausführung eines Prozesses (oder einer Prozessgruppe) zu unterbrechen, wenn die CPU-/Systemlast einen definierten Schwellenwert überschreitet. Hier lernen wir, wie man ein ähnliches Tool namens cpulimit verwendet.

Cpulimit wird verwendet, um die CPU-Auslastung eines Prozesses auf die gleiche Weise wie CPUTool einzuschränken, bietet jedoch im Vergleich zu seinem Gegenstück mehr Nutzungsoptionen. Ein wichtiger Unterschied besteht darin, dass cpulimit im Gegensatz zu cputool die Systemlast nicht verwaltet.

Empfohlene Lektüre: 9 nützliche Befehle, um CPU-Informationen unter Linux zu erhalten

Installieren Sie CPULimit, um die CPU-Auslastung eines Prozesses unter Linux zu begrenzen

CPULimit kann mit Hilfe eines Paketverwaltungstools aus den Standard-Software-Repositories von Debian/Ubuntu und seinen Derivaten installiert werden.

$ sudo apt install cpulimit

In RHEL/CentOS und Fedora müssen Sie zuerst das EPEL-Repository aktivieren und dann cpulimit wie gezeigt installieren.

# yum install epel-release
# yum install cpulimit

Begrenzung der CPU-Auslastung von Prozessen mit CUPLimit

In diesem Unterabschnitt erklären wir, wie cpulimit funktioniert. Zuerst führen wir im Hintergrund einen Befehl aus (derselbe dd-Befehl, den wir uns bei der Behandlung von cputool angesehen haben), der zu einem hohen CPU-Prozentsatz führen sollte (beachten Sie, dass die Prozess-PID nach dem Ausführen des Befehls ausgegeben wird).

$ dd if=/dev/zero of=/dev/null &

[1] 17918

Als nächstes können wir die Top- oder Glances-Tools verwenden, die den tatsächlichen, häufig aktualisierten Zustand eines laufenden Linux-Systems ausgeben, um die CPU-Auslastung des obigen Befehls zu beobachten.

$ top

Wenn wir uns die obige Ausgabe ansehen, können wir sehen, dass der dd-Prozess mit 100,0 % den höchsten Prozentsatz der CPU-Zeit ausnutzt.

Aber wir können dies mit cputlimit wie folgt einschränken. Die Option --pid oder -p wird verwendet, um die PID anzugeben, und --limit oder -l wird verwendet, um einen Nutzungsprozentsatz für einen Prozess festzulegen.

Der folgende Befehl beschränkt den Befehl dd (PID 17918) auf 50 % der Auslastung eines CPU-Kerns.

$ sudo cpulimit --pid 17918 --limit 50  

Process 17918 detected

Sobald wir cpulimit ausführen, können wir die aktuelle CPU-Auslastung für den Befehl dd mit top oder glances anzeigen. Von der Ausgabe reicht der Wert von (51,5 %-55,0 % oder etwas darüber).

Wir können die CPU-Auslastung ein zweites Mal wie folgt drosseln, wobei wir den Prozentsatz dieses Mal wie folgt weiter senken:

$ sudo cpulimit --pid 17918 --limit 20 

Process 17918 detected

Wie zuvor können wir top oder glances ausführen, um die neue CPU-Auslastung für den Prozess anzuzeigen, die zwischen 20 % und 25,0 % oder etwas darüber liegt.

$ top

Hinweis: Die Shell wird uninteraktiv – erwartet keine Benutzereingaben, wenn cpulimit läuft. Um es zu beenden (was die Operation zur Begrenzung der CPU-Auslastung stoppen sollte), drücken Sie [Strg + C].

Um cpulimit als Hintergrundprozess auszuführen, verwenden Sie die Schalter --background oder -b, um das Terminal freizugeben.

$ sudo cpulimit --pid 17918 --limit 20 --background

Um die Anzahl der auf dem System vorhandenen CPU-Kerne anzugeben, verwenden Sie das Flag --cpu oder -c (dies wird normalerweise automatisch erkannt).

$ sudo cpulimit --pid 17918 --limit 20 --cpu 4

Anstatt die CPU-Auslastung eines Prozesses zu begrenzen, können wir ihn mit den Optionen --kill oder -k beenden. Die Standardeinstellung ist, dass das an den Prozess gesendete Signal SIGCONT ist, aber um ein anderes Signal zu senden, verwenden Sie das Flag --signal oder -s.

$ sudo cpulimit --pid 17918 --limit 20 --kill 

Um den Prozess zu beenden, wenn es keinen geeigneten Zielprozess gibt, oder falls er abbricht, fügen Sie -z oder --lazy wie folgt ein.

$ sudo cpulimit --pid 17918 --limit 20 --kill --lazy

Weitere Informationen und Verwendungsoptionen finden Sie auf der Cpulimit-Manpage.

$ man cpulimit

Sehen Sie sich die folgenden nützlichen Anleitungen an, um CPU-Informationen zu finden und die CPU-/Systemleistung zu überwachen.

  1. Finden Sie die am häufigsten ausgeführten Prozesse nach höchster Speicher- und CPU-Auslastung in Linux
  2. cpustat – überwacht die CPU-Auslastung durch Ausführen von Prozessen unter Linux
  3. CoreFreq – ein leistungsstarkes CPU-Monitoring-Tool für Linux-Systeme
  4. Finden Sie die am häufigsten ausgeführten Prozesse nach höchster Speicher- und CPU-Auslastung in Linux
  5. 20 Befehlszeilentools zur Überwachung der Linux-Leistung
  6. 13 Tools zur Linux-Leistungsüberwachung – Teil 2

Im Vergleich dazu haben wir nach dem Testen von CPUTool und CPULimit festgestellt, dass ersteres eine effektivere und zuverlässigere Funktion zur Begrenzung der CPU-Auslastung bietet.

Dies entspricht dem prozentualen Bereich der CPU-Auslastung, der nach dem Ausführen beider Tools für einen bestimmten Prozess beobachtet wird. Probieren Sie beide Tools aus und fügen Sie Ihre Gedanken zu diesem Artikel hinzu, indem Sie das Feedback-Formular unten verwenden.

Verwandte Artikel: