Der Befehl taskset

taskset-featured

In diesem Beitrag lernen Sie den Befehl taskset kennen, welcher unter Linux- / UNIX-Betriebssystemen verwendet wird, um Prozesse auf Systemen mit mehreren Kernen bzw. Prozessoren gezielt letzteren zuzuweisen.

Standardmäßig erfolgt die Zuweisung von Prozessen an die verfügbaren Prozessoren automatisch durch den Linux-Kernel. Der Scheduler versucht zudem bereits standardmäßig, Prozesse auf ein- und demselben Prozessor / Kern auszuführen, solange dies aus Performance-Sicht praktikabel ist. Aus diesen Gründen ist die Verwendung von taskset nur in besonderen Ausnahmefällen sinnvoll.

Installation

Der Befehl taskset ist im Paket util-linux enthalten und auf den meisten Systemen bereits vorinstalliert. Eine manuelle Installation ist mit dem folgenden Befehl mithilfe von apt möglich:

apt-get install util-linux

Allgemeine Syntax

taskset kann verwendet werden, um einen Befehl auf einem oder mehreren festgelegten Prozessoren / Kernen auszuführen. Die Syntax hierfür lautet:

taskset [Optionen] [Maske] [Befehl [Argumente]]

Alternativ kann auch ein laufender Prozess beeinflusst werden, indem die Option -p verwendet und die entsprechende PID am Ende angegeben wird:

taskset [Optionen] -p [Maske] [PID]

Durch Verwendung letzterer Syntax ohne sonstige Optionen kann der Status des Prozesses mit der gegebenen PID ausgelesen werden. Wenn ein Prozess mit taskset beeinflusst werden soll, sind Root-Rechte erforderlich.

Bei der Maske handelt es sich um eine Bitmaske, welche spezifiziert, welcher Prozessor bzw. welche Prozessoren dem Prozess zugeordnet werden sollen. Das niedrigste Bit der Bitmaske steht dabei für den ersten logischen Prozessor, während dem höchste Bit dem letzten logischen Prozessor entspricht. Die Maske wird hexadezimal angegeben. Eine Maske darf mehr Prozessoren spezifizieren, als auf dem System tatsächlich vorhanden sind. Beispiel für eine Maske, die die Prozessoren 0, 1, 4 und 5 spezifiziert ist "33" (In binärer Schreibweise "00110011").

Beispiel: Status eines Prozesses auslesen

In diesem Beispiel wird der Status eines Prozesses ausgelesen.
Eingabe:

Dem Befehl taskset werden lediglich die Option -p und die PID 1525 übergeben.

taskset -p 1525

Ausgabe:

Der Ausgabe ist die aktuelle Maske des Prozesses mit der PID 1525 zu entnehmen. In diesem Fall ist es die Maske "3" (In binärer Schreibweise "00000011"), welche den ersten beiden logischen Prozessoren entspricht. Das hier verwendete System verfügt über insgesamt zwei logische Prozessoren, welche mit der Bitmaske standardmäßig beide zugewiesen sind.

pid 1525's current affinity mask: 3

Wichtige Optionen

Im Folgenden werden die wichtigsten Optionen des Befehls taskset vorgestellt. 

-c - CPU-Liste spezifizieren

Bei Verwendung der Option -c wird [Maske] nicht als Bitmaske, sondern als numerische Liste (dezimal) von Prozessoren interpretiert. Die Nummern werden durch Kommata getrennt. Bereichsangaben, wie beispielsweise "1-4", sind erlaubt.

taskset [Optionen] -p [CPU-Liste] [PID]

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: