TASKSET(1) Dienstprogramme fur Benutzer TASKSET(1) BEZEICHNUNG taskset - die CPU-Affinitat eines Prozesses festlegen oder ermitteln UBERSICHT taskset [Optionen] Maske Befehl [Argument...] taskset [Optionen] -p [Maske] PID BESCHREIBUNG Der Befehl taskset wird zum Ermitteln oder Festlegen der CPU-Affinitat eines laufenden Prozesses verwendet, entweder durch Angabe der Prozesskennung (PID) oder durch Ausfuhren eines neuen _Befehl_s mit dem angegebenen CPU-Bezug. Der CPU-Bezug ist eine Scheduler-Eigenschaft, die einen Prozess an eine gegebene CPU-Gruppe des Systems >>bindet<<. Der Linux-Scheduler respektiert die angegebene CPU-Affinitat, so dass der Prozess nicht auf irgend einer anderen CPU ausgefuhrt wird. Beachten Sie, dass der Scheduler auch die naturliche CPU-Affinitat unterstutzt: der Scheduler versucht, Prozesse auf der gleichen CPU zu halten, solange es aus Leistungsgrunden praktisch ist. Daher ist das Erzwingen einer spezifischen CPU-Affinitat nur in bestimmten Anwendungsfallen sinnvoll. Die Bezugsmaske einiger Prozesse wie Per-CPU-Prozesse des Kernels kann nicht gesetzt werden. Die CPU-Affinitat wird in Form einer Bitmaske dargestellt, mit dem niedrigstwertigen Bit fur die erste und dem hochstwertigen fur die letzte logische CPU. Es mussen nicht alle CPUs auf einem System vorhanden sein, aber eine Maske kann mehr CPUs enthalten, als verfugbar sind. Eine ermittelte Bitmaske bildet nur jene CPUs ab, die tatsachlich physisch auf dem System vorhanden sind. Falls eine ungultige Maske angegeben wird (fur die keine passenden CPUs auf dem System gefunden wurden), wird ein Fehler zuruckgegeben. Die Masken konnen hexadezimal angegeben werden (mit oder ohne fuhrendem >>0x<<) oder als CPU-Liste, die mit der Option --cpu-list angegeben wird. Zum Beispiel 0x00000001 ist Prozessor #0, 0x00000003 sind die Prozessoren #0 und #1, FFFFFFFF sind die Prozessoren #0 bis #31, 0x32 sind die Prozessoren #1, #4 und #5, --cpu-list 0-2,6 sind die Prozessoren #0, #1, #2 und #6. --cpu-list 0-10:2 sind die Prozessoren #0, #2, #4, #6, #8 und #10. Das Suffix >>:N<< gibt die Schrittweite in dem Bereich an, zum Beispiel wird 0-10:3 als Liste von 0,3,6,9 interpretiert. Wenn taskset etwas zuruckgibt, dann ist garantiert, dass das gegebene Programm einer gultigen CPU zugeordnet wurde. OPTIONEN -a, --all-tasks setzt oder ermittelt die CPU-Affinitat aller Prozesse (Threads) fur eine gegebene Prozesskennung (PID). -c, --cpu-list interpretiert Maske als numerische Liste von Prozessoren statt einer Bitmaske. Nummern werden durch Kommata getrennt und durfen Bereichsangaben enthalten. Beispiel: 0,5,8-11. -p, --pid verwendet eine vorhandene Prozesskennung (PID), anstatt einen neuen Prozess zu starten. Die Aktion im wird im taskset-Prozess ausgefuhrt, wenn PID 0 ist. -h, --help zeigt einen Hilfetext an und beendet das Programm. -V, --version zeigt Versionsinformationen an und beendet das Programm. VERWENDUNG Per Vorgabe wird ein neuer Befehl mit der gegebenen Affinitatsmaske ausgefuhrt: taskset Maske Befehl [Argumente] Sie konnen auch die CPU-Affinitat eines existierenden Prozesses ermitteln: taskset -p pid oder sie festlegen: taskset -p Maske PID Wenn eine CPU-Liste fur einen existierenden Prozess angegeben wird, mussen die Optionen -p und -c verkettet werden: taskset -pc CPU-Liste PID Die Form --cpu-list ist nur fur die Ausfuhrung neuer Befehle anwendbar: taskset --cpu-list CPU-Liste Befehl ZUGRIFFSRECHTE Ein Benutzer muss uber CAP_SYS_NICE verfugen, um die CPU-Affinitat eines Prozesses zu andern. Die Ermittlung der Affinitatsmaske ist allen Benutzern erlaubt. EXIT-STATUS taskset gibt in seinem Bezugsmasken-Ermittlungsmodus 0 zuruck, sofern die ubergebene PID existiert. taskset gibt in seinem Bezugsmasken-Ermittlungsmodus 0 zuruck, sofern der zugrundeliegende Systemaufruf sched_setaffinity(2) das vorgibt. Der Erfolg des Befehls garantiert nicht, dass der angegebene Thread tatsachlich auf die indizierte(n) CPU(s) migriert wurde, sondern lediglich, dass der Thread nicht auf eine CPU ausserhalb der neuen Bezugsmaske migriert wird. Beispielsweise kann der Bezugsmaskenmodus des Kermel-Threads kswapd gesetzt werden, aber der Thread muss nicht zwangslaufig unmittelbar migriert werden und es ist nicht einmal sichergestellt, dass es uberhaupt geschieht: $ ps ax -o comm,psr,pid | grep kswapd kswapd0 4 82 $ sudo taskset -p 1 82 pid 82's current affinity mask: 1 pid 82's new affinity mask: 1 $ echo $? 0 $ ps ax -o comm,psr,pid | grep kswapd kswapd0 4 82 $ taskset -p 82 pid 82's current affinity mask: 1 Im Gegensatz dazu gibt taskset einen Fehler mit dem Code 1 zuruck, wenn der Benutzer eine ungultige Bezugsmaske ubergibt: $ ps ax -o comm,psr,pid | grep ksoftirqd/0 ksoftirqd/0 0 14 $ sudo taskset -p 1 14 pid 14's current affinity mask: 1 taskset: failed to set pid 14's affinity: Invalid argument $ echo $? 1 BEISPIELE gibt die aktuelle CPU-Affinitat als Liste aus. $ taskset -pc 0 aktuelle Bezugsliste fur PID 1355988: 0-47 AUTOREN Geschrieben von Robert M. Love. COPYRIGHT Copyright (C) 2004 Robert M. Love. Dies ist freie Software, in den Quellen finden Sie die Bedingungen zur Vervielfaltigung und Weitergabe. Es gibt KEINE Garantie, auch nicht fur die MARKTREIFE oder die TAUGLICHKEIT FUR EINEN BESTIMMTEN ZWECK. SIEHE AUCH chrt(1), nice(1), renice(1), sched_getaffinity(2), sched_setaffinity(2) In sched(7) finden Sie eine Beschreibung des Scheduling-Schemas in Linux. FEHLER MELDEN Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem . VERFUGBARKEIT Der Befehl taskset ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.42.2 2026-06-16 TASKSET(1)