新闻  |   论坛  |   博客  |   在线研讨会
Linux:taskset 查询或设置进程(线程)绑定CPU(亲和性)
电子禅石 | 2024-07-12 14:24:56    阅读:918   发布文章

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


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客