線程或進程綁定到特定的cpu

經常使用的宏定義有:函數

1) 對cpu集進行初始化, 將其設置爲空集ui

void CPU_ZERO(cpu_set_t *set);線程

2) 將指定的cpu加入到cpu集中進程

void CPU_SET(int cpu, cpu_set_t *set);get

3) 將指定的cpu從集中刪除it

void CPU_CLR(int cpu, cpu_set_t *set);thread

4) 查詢cpu是否在集中,在,返回非0值; 不在,返回0cpu

int CPU_ISSET(int cpu, cpu_set_t *set);查詢

 

經常使用的函數有:co

#include <unistd.h>

1) 查詢可以使用的核數

int sysconf(_SC_NPROCESSORS_CONF);

返回系統能夠使用的核數,可是其值會包含系統中禁用的核的數目,所以該值並不表明當前系統中可用的核數

2) 當前系統能夠使用的核數

int sysconf(_SC_NPROCESSORS_ONLN);

真正表明了系統當前可用的核數

 

與以上兩個函數相似的另外兩個函數以下:

#include <sys/sysinfo.h>

1)獲取可用核數

int get_nprocs_conf(void);

2) 獲取當前真正可用的核數

int get_nprocs(void);

 

進程與cpu的綁定

#include <sched.h>

1) 設置進程與cpu的綁定

int sched_setaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);

2) 查看進程與cpu的綁定

int sched_getaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);

 

線程與cpu的綁定

1) 設置線程與cpu的綁定

int pthread_setaffinity_np(pthread_t thread, size_t cpuszie, const cpu_set_t *mask);

2) 查看線程與 cpu 的綁定

int pthread_getaffinity_np(pthread_t thread, size_t cpusize, const cpu_set_t *mask);

 

查看當前系統cpu相關信息:

cat /proc/cpuinfo

相關文章
相關標籤/搜索