不可撤销地强制程序与某个CPU(big.LITTLE)内核的关联性[C]

时间:2019-02-15 15:36:19

标签: c linux arm cpu-usage affinity

我有8个CPU正在ARM的big.LITTLE架构上实现。 0-3作为小型CPU,4-7作为大型CPU。

我正在尝试使用以下代码设置正在执行的程序的CPU关联性:

// 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
}

我的问题如下:

  

当我继续使用系统跟踪(任务监视器)进行检查时,我看到程序的CPU亲缘关系改为改为CPU 3   无论是否设置与某些CPU的关联性。我该如何强迫   在程序完成执行之前将被设置为核心的亲和力?

0 个答案:

没有答案