У меня есть 8 процессоров, реализуемых в архитектуре ARM big.LITTLE.0-3 для маленьких процессоров и 4-7 для больших процессоров.
Я пытаюсь установить сродство к процессору исполняемой программы, используя следующий код:
// Set CPU affinity to multiple cores
void set_multiple_CPU_affinity(int *cpu_nums, size_t n, pid_t pid){
cpu_set_t mask;
CPU_ZERO(&mask);
for(int i = 0; i < n; i++)
{
CPU_SET(cpu_nums[i], &mask);
}
if (sched_setaffinity(pid, sizeof(mask), &mask) == -1) {
printf("[!] Error in sched_setaffinity");
perror("sched_setaffinity");
}
else {
print_CPU_affinity(pid); // Code to print out CPU affinity set to
}
}
int main(int argc, char** argv)
{
int controlled_CPU_affinity[] = {4, 5, 6, 7};
size_t n = sizeof(controlled_CPU_affinity) / sizeof(controlled_CPU_affinity[0]);
set_multiple_CPU_affinity(controlled_CPU_affinity, n, 0);
// More code here
}
Мой вопросследующим образом:
Когда я продолжаю проверять, используя системную трассировку (монитор задач), я вижу, что сродство ЦП программы изменяется вместо ЦП 3 независимо от настройки сродства с определенными ЦП.Как я могу принудительно установить привязку к ядру, пока программа не завершит выполнение?