taskset - аффинити маска
Добавлено: 24 дек 2014, 16:02
Не очень известная, но очень нужная (временами) утилита - taskset: позволяет диагностировать или разрешить-запретить на скольких и каких процессорах выполнять задание.
Пока SMP было больше экзотикой - это команда не сильно кого интересовала.
А сейчас, когда на каждом столе многоядерный (многопроцессорный) компьютер - это бывает очень даже надо.
Это диагностика.
Этой же командой можно либо изменить процессоры, используемые уже запущенным процессом (по PID), либо запускать команду, сразу указывая на каких процессорах её выполняться.
Поменять разрешённые процессоры для уже выполняющейся команды (актуально для серверов):
Пример запуска программы (не важно в деталях что за программа ... но у неё своих куча опций) на разных наборах допустимых ей процессоров (из 4-х: 0...3)
P.S. у команды taskset есть маленький дефект командной строки: если записать опцию как -c1 (без пробела, что допустимо по синтаксису командной строки), то считается что это ошибочная опция.
Пока 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
...
Код: Выделить всё
$ taskset -c 0 ./tspeed -t4 -n60 -a100
...
$ taskset -c 0-3 ./tspeed -t4 -n60 -a100
...
$ taskset -c 0,2 ./tspeed -t4 -n60 -a100
...