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