Linux:taskset 查询或设置进程(线程)绑定CPU(亲和性)
Linux:taskset 查询或设置进程(线程)绑定CPU(亲和性)
通过 taskset 命令可将某个进程与某个CPU核心绑定,使得其仅在与之绑定的CPU核心上运行。
线程是最小的内核执行调度单元,因此,准确地说是将某个线程与某个CPU核心绑定,而非某个进程。
taskset 是依据 线程PID(TID)查询或设置线程的CPU亲和性(与哪个CPU核心绑定)。
查询 PID(TID)= 11498 的线程可用的CPU核心
[test1280@localhost ~]$ taskset -pc 11498
pid 11498's current affinity list: 0-3
由于当前主机仅有4个核心:
[test1280@localhost ~]$ cat /proc/cpuinfo | grep process
processor : 0
processor : 1
processor : 2
processor : 3
默认情况下,TID=11498的线程可以运行在任意的CPU核心上(0-3)。
-p, --pid operate on an existing PID and not launch a new task
-c, --cpu-list specify a numerical list of processors instead of a bitmask.
The list may contain multiple items, separated by comma, and ranges.
For example, 0,5,7,9-11.
查询 PID(TID)= 11498 的线程可用的CPU核心,掩码形式表示
[test1280@localhost ~]$ taskset -p 11498
pid 11498's current affinity mask: f
0x0F(十六进制) => 1111(二进制),最右起第一个1表示CPU核心#0,第二个1表示CPU核心#1…
设置 PID(TID)= 11498 的线程可用的CPU核心到#0、#2上
[test1280@localhost ~]$ 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之外的核心上,掩码形式表示
[test1280@localhost ~]$ taskset -p 7 11498
pid 11498's current affinity mask: 5
pid 11498's new affinity mask: 7
原来的是0、2,即0101(掩码十进制5),现在的是0111,即掩码十进制7。
taskset 不仅可通过PID查询运行中的线程的CPU亲和性,也可以运行一个新的进程。
可参考 man taskset 或执行 taskset -h。
————————————————
原文链接:https://blog.csdn.net/test1280/article/details/87991302
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。