Как установить привязку процессора к процессу в Linux?


Ответы:


24

Я использовал набор задач для этого. Если у вас установлен набор задач, что-то вроде:

taskset -c 1,3 -p 45678

установил бы процесс с идентификатором 45678, чтобы иметь сходство с процессорами 1 и 3.


1
Анонимное редактирование предполагает, что команда должна быть, taskset -p -c 1,3 45678а не taskset -c 1,3 -p 45678; то есть, что -c 1,3это маска спецификации и, как таковые, должны быть помещены между -pи pid.
G-Man говорит: «Восстановите Монику»

7

Внутри процесса вызов будет sched_setaffinity(), или для чего-то другого,pthread_setaffinity_np()

В связи с этим, если вы беспокоитесь о сродстве ЦП вашей программы, возможно, стоит обратить внимание и на то, как она распределяет память. Большие системы с памятью, подключенной к более чем одному контроллеру (т. Е. К нескольким сокетам ЦП, каждый со своим собственным), будут иметь различную задержку и пропускную способность между различными парами ЦП и памяти. Вы также захотите изучить сходство с NUMA, используя numactlкоманду или системные вызовы, с которыми она работает. Одна программа, над которой я работал, улучшила производительность на 10%.


3

Вам необходимо установить schedutils(утилиты планировщика Linux). Я использую его на своем рабочем столе Ubuntu.

SF ссылка


1
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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.