Как установить привязку процессора к процессу в Linux?
29
Я использовал набор задач для этого. Если у вас установлен набор задач, что-то вроде:
taskset -c 1,3 -p 45678
установил бы процесс с идентификатором 45678, чтобы иметь сходство с процессорами 1 и 3.
taskset -p -c 1,3 45678
а неtaskset -c 1,3 -p 45678
; то есть, что-c 1,3
это маска спецификации и, как таковые, должны быть помещены между-p
иpid
.Внутри процесса вызов будет
sched_setaffinity()
, или для чего-то другого,pthread_setaffinity_np()
В связи с этим, если вы беспокоитесь о сродстве ЦП вашей программы, возможно, стоит обратить внимание и на то, как она распределяет память. Большие системы с памятью, подключенной к более чем одному контроллеру (т. Е. К нескольким сокетам ЦП, каждый со своим собственным), будут иметь различную задержку и пропускную способность между различными парами ЦП и памяти. Вы также захотите изучить сходство с NUMA, используя
numactl
команду или системные вызовы, с которыми она работает. Одна программа, над которой я работал, улучшила производительность на 10%.источник
Вам необходимо установить
schedutils
(утилиты планировщика Linux). Я использую его на своем рабочем столе Ubuntu.SF ссылка
источник
запускает
a.out
процесс с заданными аргументами и привязкой к процессорам 1, 2 или 3 (с нуля).Вот минимальная тестовая программа на C, которую можно использовать, чтобы увидеть ее в действии: https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from -с / 50117787 # 50117787
источник