TASKSET(1)

НАЗВА
taskset - встановлення або отримання спорідненості процесу до процесорів

КОРОТКИЙ ОПИС

taskset [параметри] маска команда [аргумент...]

taskset [параметри] -p [маска] pid

ОПИС

Команду taskset призначено для встановлення або отримання спорідненості до процесора для запущено процесу, заданого за допомогою pid, або запуску нової команди із заданою спорідненістю до процесора. Спорідненість до процесора є властивістю планувальника, яка «пов’язує» процес із заданим набором процесорів у системі. Планувальник Linux враховуватиме задану спорідненість до процесора, і процес не працюватиме на будь-яких інших процесорах. Зауважте, що у планувальнику Linux також передбачено підтримку природної спорідненості до процесорів: планувальник намагається зберігати процеси на якомусь одному процесорі, доки це є практичним з міркувань швидкодії. Через це примусове визначення спорідненості до процесорів є корисним лише у деяких програмах. Спорідненість деяких процесів, зокрема потоків окремих процесорів ядра встановлювати не можна.

Спорідненість до процесора визначається бітовою маскою, де біт найнижчого порядку відповідає першому логічному процесору, а біт найвищого порядку відповідає останньому логічному процесору. У певній системі можуть існувати не усі процесори, але маска може задавати більше процесорів, ніж існує. Отримана маска відповідатиме лише бітам, які фізично існують у системі. Якщо задано некоректну маску (тобто маска не відповідає жодним коректним процесорам у поточній системі), буде повернуто повідомлення про помилку. Маски може бути задано у шістнадцятковій формі (з початковим «0x» або без нього) або як список процесорів в аргументі --cpu-list. Приклад:

0x00000001
    це процесор із номером 0,

0x00000003
    це процесори із номерами 0 і 1,

FFFFFFFF
    це процесори із номерами від 0 до 31,

0x32
    це процесори із номерами 1, 4 і 5,

--cpu-list 0-2,6
    це процесори із номерами 0, 1, 2 і 6.

--cpu-list 0-10:2
    це процесори із номерами 0, 2, 4, 6, 8 і 10. Суфікс «:N» вказує крок у діапазоні. Наприклад, 0-10:3 - це список 0,3,6,9.

При поверненні з taskset програма гарантує, що вказану програму заплановано до виконання на коректному процесорі.

ПАРАМЕТРИ

-a, --all-tasks
    Встановити або отримати спорідненість до процесора для усіх завдань (потоків обробки) для вказаного PID.

-c, --cpu-list
    Вважати маску числовим списком процесорів, а не бітовою маскою. Числа слід відокремлювати комами, можна включати діапазони. Приклад: 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
    Вивести текст довідки і завершити роботу.

-V, --version
    Показати дані щодо версії і завершити роботу.

КОРИСТУВАННЯ

Типовою поведінкою є запуск нової команди із заданою маскою спорідненості:
    taskset маска команда [аргументи]

Крім того, ви можете отримати спорідненість до процесора для наявного завдання:
    taskset -p pid

Або встановити спорідненість:
    taskset -p маска pid

When a cpu-list is specified for an existing process, the -p and -c options must be grouped together:
    taskset -pc pid список-процесорів

Формою --список-процесорів можна скористатися лише для запуску нових команд:
    taskset --cpu-list список-процесорів команда

ПРАВА ДОСТУПУ

Користувач може змінити спорідненість до процесора процесу, що належить цьому користувачеві. Користувач має бути власником CAP_SYS_NICE, щоб мати змогу змінювати спорідненість до процесора для процесу, який належить іншому користувачеві. Користувач може отримувати маску спорідненості для будь-якого процесу.

СТАН ВИХОДУ

taskset returns 0 in its affinity-getting mode as long as the provided PID exists.

taskset returns 0 in its affinity-setting mode as long as the underlying sched_setaffinity(2) system call does. The success of the command does not guarantee that the specified thread has actually migrated to the indicated CPU(s), but only that the thread will not migrate to a CPU outside the new affinity mask. For example, the affinity of the kernel thread kswapd can be set, but the thread may not immediately migrate and is not guaranteed to ever do so:

$ 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

In contrast, when the user specifies an illegal affinity, taskset will print an error and return 1:

$ 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

ПРИКЛАДИ

Print the current CPU affinity as a list.

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

АВТОРИ

Написано Robert M. Love.

АВТОРСЬКІ ПРАВА

© Robert M. Love, 2004. Це програмне забезпечення є вільним, умови копіювання викладено у його початкових кодах. Умовами ліцензування програми НЕ передбачено жодних гарантій, зокрема гарантій працездатності або придатності для певної мети.

ТАКОЖ ПЕРЕГЛЯНЬТЕ

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

Див. sched(7), щоб ознайомитися зі схемою планування у Linux.

ЯК НАДІСЛАТИ ЗВІТ ПРО ВАДИ

Для звітування щодо вад скористайтеся

ДОСТУП ДО ПРОГРАМИ

Програма taskset є частиною пакунка util-linux, який можна отримати з