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

Инструменты для управления и диагностики системы

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 24 дек 2014, 16:02

Не очень известная, но очень нужная (временами) утилита - 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 (без пробела, что допустимо по синтаксису командной строки), то считается что это ошибочная опция.

Ответить

Вернуться в «Системные утилиты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость