将线程绑定到特定的cpu上

1、借助命令taskset

查看进程运行在哪个cpu上

taskset -p pid  #查看进程(进程号pid)运行在哪个cpu上

taskset -pc MASK PID #将进程号为PID的进程绑定到对应MASK位为1的cpu上;如四核cpu,MASK为2(0010),则绑定到cpu1

2、使用sched_setaffinity系统调用

sched_setaffinity可以将某个进程绑定到一个特定的CPU。

#define _GNU_SOURCE             /* See feature_test_macros(7) */
#include 

/* 设置进程号为pid的进程运行在mask所设定的CPU上
 * 第二个参数cpusetsize是mask所指定的数的长度
 * 通常设定为sizeof(cpu_set_t)

 * 如果pid的值为0,则表示指定的是当前进程 
 */
int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);

int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);/* 获得pid所指示的进程的CPU位掩码,并将该掩码返回到mask所指向的结构中 */

 

 

你可能感兴趣的:(内核编程)