Відповіді:
Всередині процесу дзвінок буде 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.