TASKSET(1) Användarkommandon TASKSET(1)

taskset - ange eller hämta en process CPU-affinitet

taskset [flaggor] mask kommando [argument...]

taskset [flaggor] -p [mask] pid

Kommandot taskset används för att ställa in eller hämta CPU-affiniteten för en process som körs med hjälp av dess pid, eller för att starta ett nytt kommando med en given CPU-affinitet. CPU-affinitet är en schemaläggningsegenskap som "binder" en process till en viss uppsättning processorer i systemet. Linux-schemaläggaren kommer att respektera den givna CPU-affiniteten och processen kommer inte att köras på några andra CPU:er. Observera att Linux-schemaläggaren även stöder naturlig CPU-affinitet: schemaläggaren försöker hålla processerna på samma CPU så länge som möjligt av prestandaskäl. Att tvinga fram en specifik CPU-affinitet är därför endast användbart i vissa applikationer. Affiniteten för vissa processer, t.ex. kärnans per-CPU-trådar, kan inte ställas in.

CPU-affiniteten representeras som en bitmask, där den lägsta biten motsvarar den första logiska CPU:n och den högsta biten motsvarar den sista logiska CPU:n. Det är inte säkert att alla processorer finns i ett visst system, men en mask kan ange fler processorer än vad som finns. En hämtad mask kommer endast att återspegla de bitar som motsvarar processorer som fysiskt finns i systemet. Om en ogiltig mask anges (dvs. en mask som inte motsvarar några giltiga processorer i det aktuella systemet) returneras ett felmeddelande. Maskerna kan anges i hexadecimal (med eller utan en inledande "0x") eller som en CPU-lista med flaggan --cpu-list. Till exempel,

0x00000001

är processor #0,

0x00000003

är processorerna #0 och #1,

FFFFFFFFFF

är processorerna #0 till #31,

0x32

är processorerna #1, #4 och #5,

--cpu-list 0-2,6

är processorerna #0, #1, #2 och #6.

--cpu-list 0-10:2

är processorer #0, #2, #4, #6, #8 och #10. Suffixet ":N" anger stride i intervallet, t.ex. 0-10:3 tolkas som 0,3,6,9 list.

När taskset återkommer är det garanterat att det givna programmet har schemalagts till en laglig CPU.

-a, --all-tasks

Ställ in eller hämta CPU-affiniteten för alla uppgifter (trådar) för en given PID.

-c, --cpu-list

Tolka mask som en numerisk lista över processorer i stället för en bitmask. Siffrorna separeras med kommatecken och kan innehålla intervall. Till exempel 0,5,8-11.

-p, --pid

Operate on an existing PID and do not launch a new task. If PID is zero, then operate on the taskset process.

-h, --help

Visa hjälptext och avsluta.

-V, --version

Visa version och avsluta.

Standardbeteendet är att köra ett nytt kommando med en given affinitetsmask:

taskset mask kommando [argument]

Du kan också hämta CPU-affiniteten för en befintlig uppgift:

taskset -p pid

Eller ställ in den:

taskset -p mask pid

När en cpu-lista anges för en befintlig process måste flaggan -p och -c grupperas tillsammans:

taskset -pc cpu-list pid

Formuläret --cpu-list är endast tillämpligt för att starta nya kommandon:

taskset --cpu-lista cpu-lista kommando

En användare kan ändra CPU-affiniteten för en process som tillhör samma användare. En användare måste ha CAP_SYS_NICE för att ändra CPU-affiniteten för en process som tillhör en annan användare. En användare kan hämta affinitetsmasken för vilken process som helst.

taskset returnerar 0 i sitt affinity-getting-läge så länge som det angivna PID:et existerar.

taskset returnerar 0 i sitt affinitetsinställningsläge så länge som det underliggande systemanropet sched_setaffinity(2) gör det. Om kommandot lyckas garanterar det inte att den angivna tråden faktiskt har migrerat till den eller de angivna processorerna, utan endast att tråden inte kommer att migrera till en processor utanför den nya affinitetsmasken. Till exempel kan affiniteten för kärntråden kswapd ställas in, men det är inte säkert att tråden omedelbart migrerar och det är inte heller säkert att den någonsin gör det:

$ ps ax -o comm,psr,pid | grep kswapd
kswapd0 4 82
$ sudo taskset -p 1 82
pid 82:s aktuella affinitetsmask: 1
pid 82:s nya affinitetsmask: 1
$ echo $?
0
$ ps ax -o comm,psr,pid | grep kswapd
kswapd0 4 82
$ taskset -p 82
pid 82:s aktuella affinitetsmask: 1

Om användaren däremot anger en olaglig affinitet kommer taskset att skriva ut ett felmeddelande och returnera 1:

$ ps ax -o comm,psr,pid | grep ksoftirqd/0
ksoftirqd/0 0 14
$ sudo taskset -p 1 14
pid 14:s aktuella affinitetsmask: 1
taskset: misslyckades med att ställa in pid 14:s affinitet: Ogiltigt argument
$ echo $?
1

Print the current CPU affinity as a list.

$ taskset -pc 0
pid 1355988’s current affinity list: 0-47

Skriven av Robert M. Love.

Copyright © 2004 Robert M. Love. Detta är fri programvara; se källan för kopieringsvillkor. Det finns INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT BESTÄMMT SYFTE.

chrt(1), nice(1), renice(1), sched_getaffinity(2), sched_setaffinity(2)

Se sched(7) för en beskrivning av Linux schemaläggningssystem.

För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.

Kommandot taskset ingår i paketet util-linux som kan hämtas från Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1