| TASKSET(1) | Användarkommandon | TASKSET(1) |
NAMN
taskset - ange eller hämta en process CPU-affinitet
SYNOPSIS
taskset [flaggor] mask kommando [argument...]
taskset [flaggor] -p [mask] pid
BESKRIVNING
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
0x00000003
FFFFFFFFFF
0x32
--cpu-list 0-2,6
--cpu-list 0-10:2
När taskset återkommer är det garanterat att det givna programmet har schemalagts till en laglig CPU.
FLAGGOR
-a, --all-tasks
-c, --cpu-list
-p, --pid
-h, --help
-V, --version
ANVÄNDNING
Standardbeteendet är att köra ett nytt kommando med en given affinitetsmask:
Du kan också hämta CPU-affiniteten för en befintlig uppgift:
Eller ställ in den:
När en cpu-lista anges för en befintlig process måste flaggan -p och -c grupperas tillsammans:
Formuläret --cpu-list är endast tillämpligt för att starta nya kommandon:
TILLSTÅND
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.
AVSLUTSSTATUS
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
EXEMPEL
Print the current CPU affinity as a list.
$ taskset -pc 0
pid 1355988’s current affinity list: 0-47
UPPHOVSPERSONER
Skriven av Robert M. Love.
UPPHOVSRÄTT
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.
SE ÄVEN
chrt(1), nice(1), renice(1), sched_getaffinity(2), sched_setaffinity(2)
Se sched(7) för en beskrivning av Linux schemaläggningssystem.
FELRAPPORTERING
För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.
TILLGÄNGLIGHET
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 |