Як я можу встановити спорідненість процесора до процесу в Linux?


Відповіді:


24

Я використав для цього набір завдань. Якщо у вас встановлений набір завдань, щось на кшталт:

taskset -c 1,3 -p 45678

встановив би процес з id 45678, щоб він мав спорідненість до cpus 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()або для файлів pthreads,pthread_setaffinity_np()

У відповідній примітці, якщо ви турбуєтеся про спорідненість процесора до вашої програми, можливо, варто звернути увагу і на те, як відбувається розподіл пам'яті. Більші системи з пам'яттю, приєднаними до більш ніж одного контролера (тобто декількох розеток процесора, кожен з яких має власні), матимуть змінну затримку та пропускну здатність між різними парами CPU-пам'яті. Ви також хочете вивчити спорідненість до NUMA, використовуючи numactlкоманду або системні виклики, з якими вона працює. Одна програма, над якою я працював, отримала 10% підвищення продуктивності.


3

Потрібно встановити schedutils(утиліти планувальника Linux). Я використовую його на своєму робочому столі Ubuntu.

SF посилання


1
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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.