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