设置程序在指定CPU核心运行
一、如何查看程序运行的CPU信息
1.1 查看当前系统CPU有几个核心
查看CPU核心数量:lscpu

1.2 查看程序的PID
ps aux|grep cpu_test
1.3 查看程序可运行的CPU
taskset -c -p pid
1.4 设置程序在指定核心上运行
1.4.1 通过运行时的参数设置
taskset -c 1 ./cpu_test
1.4.2 通过代码设置
#define _GNU_SOURCE
#include <stdio.h>
#include <sched.h>
int main() {
        cpu_set_t mask;
        CPU_ZERO(&mask);
        CPU_SET(1,&mask);
        if(sched_setaffinity(0,sizeof(mask),&mask)== -1)
        {
                perror("sched setaffinity");
                return -1;
        }
    while(1)
    {
        printf("Hello, World!\n");
        sleep(1);
    }
    return 0;
}
二、未设置程序在指定CPU核心运行
// cpu_test.c
#include <stdio.h>
int main() {
    while(1)
    {
        printf("Hello, World!\n");
        sleep(1);
    }
    return 0;
}
查看程序的PID

查看程序可运行的核

得出该程序可以在0-3 4个核上运行。
三、设置程序在指定CPU核心运行
假设我们要使程序运行在第2个核上:
#define _GNU_SOURCE
#include <stdio.h>
#include <sched.h>
int main() {
        cpu_set_t mask;
        CPU_ZERO(&mask);
        CPU_SET(1,&mask);
        if(sched_setaffinity(0,sizeof(mask),&mask)== -1)
        {
                perror("sched setaffinity");
                return -1;
        }
    while(1)
    {
        printf("Hello, World!\n");
        sleep(1);
    }
    return 0;
}
查看程序的PID

查看程序可运行的CPU核

得出设置成功,已将程序绑定在CPU的第2个核上。



















