命令行形式
taskset [options] mask command [arg]...
taskset [options] -p [mask] pid
PARAMETER
mask : cpu亲和性,当没有-c选项时, 其值前无论有没有0x标记都是16进制的,
当有-c选项时,其值是十进制的.
command : 命令或者可执行程序
arg : command的参数
pid : 进程ID,可以通过ps/top/pidof等命令获取
OPTIONS
-a, --all-tasks (旧版本中没有这个选项)
这个选项涉及到了linux中TID的概念,他会将一个进程中所有的TID都执行一次CPU亲和性设置.
TID就是Thread ID,他和POSIX中pthread_t表示的线程ID完全不是同一个东西.
Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),这个TID就是这个线程的真实PID.
-p, --pid
操作已存在的PID,而不是加载一个新的程序
-c, --cpu-list
声明CPU的亲和力使用数字表示而不是用位掩码表示. 例如 0,5,7,9-11.
-h, --help
display usage information and exit
-V, --version
output version information and exit
使用样例
1) 设置新程序的CPU亲和性
taskset -c 0 ls -al /etc/init.d/ #使用CPU0运行ls命令显示/etc/init.d下的所有内容
2) 查看进程的CPU亲和性(通过PID)
taskset -p 1 #查看init进程(PID=1)的CPU亲和性
3) 修改正在运行进程的CPU亲和性
taskset -cp 新的CPU号 pid #更改top命令运行的CPU号
使用方法:
首先运行:[~]# ps -eo pid,args,psr | grep top #获取top命令的pid和其所运行的CPU号
其次运行:[~]# taskset -cp 新的CPU号 pid #更改top命令运行的CPU号
最后运行:[~]# ps -eo pid,args,psr | grep top #查看是否更改成功
参见:https://www.cnblogs.com/LubinLew/p/cpu_affinity.html