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