taskset - аффинити маска

Kwork.ru - услуги фрилансеров от 500 руб.
Сен
34
11
Проверенные
Не очень известная, но очень нужная (временами) утилита - taskset: позволяет диагностировать или разрешить-запретить на скольких и каких процессорах выполнять задание.

Пока SMP было больше экзотикой - это команда не сильно кого интересовала.
А сейчас, когда на каждом столе многоядерный (многопроцессорный) компьютер - это бывает очень даже надо.

Код:
Код:
$ cat /proc/cpuinfo | grep processor | wc -l
4
$ ps
  PID TTY          TIME CMD
3562 pts/10   00:00:00 bash
5070 pts/10   00:00:00 ps
$ taskset -p 3562
pid 3562's current affinity mask: f

Это диагностика.

Этой же командой можно либо изменить процессоры, используемые уже запущенным процессом (по PID), либо запускать команду, сразу указывая на каких процессорах её выполняться.

Поменять разрешённые процессоры для уже выполняющейся команды (актуально для серверов):
Код:
Код:
$ taskset -p 3562 -c 1,2
...


Пример запуска программы (не важно в деталях что за программа ... но у неё своих куча опций) на разных наборах допустимых ей процессоров (из 4-х: 0...3)
Код:
Код:
$ taskset -c 0 ./tspeed -t4 -n60 -a100
...
$ taskset -c 0-3 ./tspeed -t4 -n60 -a100
...
$ taskset -c 0,2 ./tspeed -t4 -n60 -a100
...


P.S. у команды taskset есть маленький дефект командной строки: если записать опцию как -c1 (без пробела, что допустимо по синтаксису командной строки), то считается что это ошибочная опция.
 
Kwork.ru - услуги фрилансеров от 500 руб. Kwork.ru - услуги фрилансеров от 500 руб. Kwork.ru - услуги фрилансеров от 500 руб.
Сверху Снизу