系统相关
首页 > 系统相关> > Linux 编程 —— taskset 查询或设置进程绑定CPU(亲和性)

Linux 编程 —— taskset 查询或设置进程绑定CPU(亲和性)

作者:互联网

文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。


笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888


  通过 taskset 命令可将某个进程与某个 CPU 核心绑定,使得其仅在与之绑定的 CPU 核心上运行。线程是最小的内核执行调度单元,因此,准确地说是将某个线程与某个 CPU 核心绑定,而非某个进程。taskset 是依据线程 PID(TID)查询或设置线程的 CPU 亲和性(与哪个 CPU 核心绑定)。


taskset 指令介绍:

>>  taskset --help
	Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]
	
	
	Show or change the CPU affinity of a process.
	
	Options:
	 -a, --all-tasks         operate on all the tasks (threads) for a given pid
	 -p, --pid               operate on existing given pid
	 -c, --cpu-list          display and specify cpus in list format
	 -h, --help              display this help
	 -V, --version           display version
	
	The default behavior is to run a new command:
	    taskset 03 sshd -b 1024
	You can retrieve the mask of an existing task:
	    taskset -p 700
	Or set it:
	    taskset -p 03 700
	List format uses a comma-separated list instead of a mask:
	    taskset -pc 0,3,7-11 700
	Ranges in list format can take a stride argument:
	    e.g. 0-31:2 is equivalent to mask 0x55555555
	
	For more details see taskset(1).

查询 PID(TID)= 11498 的进程可用的CPU核心

>> taskset -pc 11498
>> # 默认情况下,TID=11498的线程可以运行在任意的CPU核心上(0-3) 
>> pid 11498's current affinity list: 0-3

查询 PID(TID)= 11498 的进程可用的CPU核心,掩码形式表示

>> # 0x0F(十六进制) => 1111(二进制),最右起第一个1表示CPU核心#0,第二个1表示CPU核心#1 …
>> taskset -p 11498
>> pid 11498's current affinity mask: f

设置 PID(TID)= 11498 的进程可用的CPU核心到#0、#2上

>> taskset -pc 0,2 11498
>> pid 11498's current affinity list: 2
>> pid 11498's new affinity list: 0,2

设置 PID(TID)= 11498 的进程可用的CPU核心到除#0之外的核心上,掩码形式表示

>> # 原来的是0、2,即0101(掩码十进制5),现在的是0111,即掩码十进制7。
>> taskset -p 7 11498
>> pid 11498's current affinity mask: 5
>> pid 11498's new affinity mask: 7

标签:pid,list,11498,affinity,taskset,Linux,CPU
来源: https://blog.csdn.net/Aliven888/article/details/117303529