Der Befehl cpulimit

cpulimit-featured

Dieser Beitrag behandelt den Befehl cpulimit, welcher unter UNIX- / Linux-Betriebssystemen verwendet wird, um die CPU-Auslastung, die durch einen Prozess erzeugt wird, zu begrenzen. Konkret wird dazu der maximale prozentuale Anteil der CPU-Zeit, der durch den Prozess inklusive seiner Kindprozesse verwendet wird, limitiert. Damit unterscheidet sich cpulimit auch von dem Befehl nice, welcher lediglich der Festlegung der Priorität eines Prozesses dient.

Wichtig zu beachten ist, dass die maximal verfügbare prozentuale CPU-Zeit bei N Prozessoren oder Prozessorkernen in einem Rechner N*100 Prozent, also ein N-faches von 100 Prozent, beträgt. Weiterhin sind bei der Begrenzung nicht-eigener Prozesse Root-Berechtigungen erforderlich. Zur Begrenzung der genutzten CPU-Zeit sendet cpulimit ein SIGSTOP Signal an den Prozess, um ihn zu stoppen, wenn er mehr als die erlaubte Zeit verwendet. Nach einem kurzen Zeitintervall wird der Prozess dann wieder durch Senden eines SIGCONT-Signals gestartet. Auf diesem Weg kontrolliert cpulimit, wie viel CPU-Zeit der Prozess verwendet. Das Vorgehen kann zu irreführenden Job-Kontrollmeldungen führen, die anzeigen, dass der Job gestoppt wurde. Er wurde zwar tatsächlich gestoppt, aber daraufhin direkt wieder gestartet. Auch Probleme mit interaktiven Shells, die SIGSTOP / SIGCONT erkennen oder anderweitig darauf angewiesen sind, können auftreten.

Installation

Der Befehl cpulimit ist in der Regel nicht standardmäßig auf Systemen installiert. Die Installation erfolgt mithilfe von apt mit dem folgenden Befehl:

apt-get install cpulimit

Nähere Informationen zur Paket- und Quellenverwaltung mit apt können Sie in unserem Beitrag dazu nachlesen.

Allgemeine Syntax

Die allgemeine Syntax von cpulimit lautet folgendermaßen:

cpulimit [Ziel] -l [Max Prozent] [Optionen]

Das Ziel gibt an, welcher Prozess begrenzt werden soll und muss einen der folgenden Werte annehmen:

Ziel

Beschreibung

-p [PID]

Spezifiziert den zu begrenzenden Prozess mithilfe seiner Prozess-ID (PID).

-e [Datei]

Spezifiziert den zu begrenzenden Prozess anhand des Namens der zugehörigen ausführbaren Datei.

-P [Pfad]

Spezifiziert den zu begrenzenden Prozess anhand des absoluten Pfads zur zugehörigen ausführbaren Datei.

Alternativ ist es auch möglich, ein anderes Programm mit cpulimit zu starten und die Begrenzung der CPU-Zeit dann direkt auf dem neuen Prozess vorzunehmen. Hierzu wird der Befehl zum Starten des Programms mit allen seinen Optionen als letzte Option von cpulimit hinter zwei Minuszeichen "--" angegeben:

cpulimit -l [Max Prozent] [Optionen] -- [Befehl]

Es ist zu beachten, dass die Beendigung der Ausführung von cpulimit nicht automatisch auch den von ihm gestarteten und begrenzten Prozess beendet. Es wird lediglich die Begrenzung aufgehoben.

Schließlich ist die Option -l, welche die maximale prozentuale CPU-Zeit des Prozesses spezifiziert, notwendig. Sie ist also nicht, wie die übrigen Optionen, optional. Der Wertebereich des hierfür benötigten Parameters ist 1 und aufsteigend.

Beispiel: cpulimit mit PID

Eingabe:

cpulimit -p 2064 -l 30

Bedeutung:

Der Prozess mit der Prozess-ID (PID) 2064 wird auf eine maximale prozentuale Benutzung der CPU-Zeit von 30 Prozent begrenzt.

Beispiel: cpulimit mit Dateiname

Eingabe:

cpulimit -e rsync -l 50

Bedeutung:

Der Prozess, der die ausführbare Datei mit dem Namen "rsync" hat, wird auf eine maximale prozentuale Benutzung der CPU-Zeit von 50 Prozent begrenzt.

Beispiel: cpulimit mit absoluter Pfadangabe

Eingabe:

cpulimit -P /usr/bin/rsync -l 50

Bedeutung:

Der Prozess, welcher die ausführbare Datei mit dem absoluten Dateipfad "/usr/bin/rsync" verwendet,  wird auf eine maximale prozentuale Benutzung der CPU-Zeit von 50 Prozent begrenzt.

Wichtige Optionen

Im Folgenden lernen Sie die wichtigsten Optionen des Befehls cpulimit kennen.

-q - "Leise"-Modus

Die Option -q wird verwendet, um cpulimit in einem sogenannten "Leise"-Modus (quiet mode) zu starten. In diesem Modus werden ausschließlich Fehlermeldungen ausgegeben.

cpulimit [Ziel] -l [Max Prozent] -q

-v - Ausführliche Ausgabe

Eine ausführliche Ausgabe von Statistiken zum Prozess ist mit der Option -v zu erreichen. Es werden zyklisch Werte für "%CPU", "work quantum", "sleep quantum" und "active rate" ausgegeben.

cpulimit [Ziel] -l [Max Prozent] -v
Beispiel: Option -v

Dieses Beispiel zeigt die ausführliche Ausgabe mit der Option -v.
Eingabe:

Es soll ein Prozess mit der PID 2387 auf eine maximale prozentuale CPU-Zeit von 30 Prozent begrenzt werden. Zusätzlich wird die Option -v angehängt.

cpulimit -p 2387 -l 30 -v

Ausgabe:

Der Ausgabe ist zu Beginn die Anzahl von cpulimit erkannter CPUs, die Priorität des Prozesses sowie seine PID zu entnehmen. Im Anschluss folgt zyklisch die Ausgabe der Werte "%CPU""work quantum""sleep quantum" und "active rate".

befehl-cpulimit-beispiel-1

-z - Lazy-Modus

Mit dem Lazy-Modus ist es möglich, cpulimit zu beenden, wenn es keinen entsprechenden Prozess gibt oder dieser beendet wurde. Wird die Option nicht angegeben, so läuft cpulimit weiter, bis es beendet wird.

cpulimit [Ziel] -l [Max Prozent] -z

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: