Как установить привязку ЦП к процессу от C или C++ в Linux?

34
задан Ciro Santilli 新疆改造中心法轮功六四事件 5 February 2019 в 23:59
поделиться

3 ответа

Необходимо использовать sched_setaffinity(2) .

, Например, для работы центральных процессоров 0 и 2 только:

#define _GNU_SOURCE
#include <sched.h>

cpu_set_t  mask;
CPU_ZERO(&mask);
CPU_SET(0, &mask);
CPU_SET(2, &mask);
result = sched_setaffinity(0, sizeof(mask), &mask);

(0 для первого параметра означает текущий процесс, предоставьте PID, если это - некоторый другой процесс, Вы хотите управлять).

См. также sched_getcpu(3) .

48
ответ дан Alnitak 27 November 2019 в 16:44
поделиться

В коротком

unsigned long mask = 7; /* processors 0, 1, and 2 */
unsigned int len = sizeof(mask);
if (sched_setaffinity(0, len, &mask) < 0) {
    perror("sched_setaffinity");
}

Взгляд в Привязка ЦП для получения дополнительной информации

2
ответ дан thAAAnos 27 November 2019 в 16:44
поделиться

Используйте sched_setaffinity на уровне процесса, или pthread_attr_setaffinity_np для отдельных потоков.

8
ответ дан puetzk 27 November 2019 в 16:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: