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 <sched.h> /* 设置进程号为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所指向的结构中 */
博客介绍了两种将进程绑定到特定CPU的方法。一是借助命令taskset,可查看进程运行的CPU,也能将进程绑定到对应MASK位为1的CPU上;二是使用sched_setaffinity系统调用,可将某个进程绑定到特定CPU。
540

被折叠的 条评论
为什么被折叠?



