linux:taskset 查询或设置进程(线程)绑定cpu(亲和性)-尊龙官方平台

linux:taskset 查询或设置进程(线程)绑定cpu(亲和性)

el/2024/3/25 16:48:54

linux:taskset 查询或设置进程(线程)绑定cpu(亲和性)

通过 taskset 命令可将某个进程与某个cpu核心绑定,使得其仅在与之绑定的cpu核心上运行。

线程是最小的内核执行调度单元,因此,准确地说是将某个线程与某个cpu核心绑定,而非某个进程。
taskset 是依据
查询 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。


http://www.ngui.cc/el/5127078.html

相关文章

linux:查看线程运行于哪个cpu核心上

linux:查看线程运行于哪个cpu核心上 线程是最小的执行调度单元,线程执行于某个cpu核心之上,或者说某个cpu核心执行此线程。 如何查看某线程运行于哪个cpu核心上呢? 方法一:ps -elf 查找 psr 字段值 [test1280localh…

linux:获取、设置进程(线程)的cpu亲和性

linux:设置进程(线程)的cpu亲和性 一、进程的cpu亲和性的获取(get)或者设置(set) int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask); int sched_getaffinity(pid_t pid,…

go:go-chassis 第三方依赖包问题

go:go-chassis 第三方依赖包问题 1.下载 go-chassis 源码 test1280 $ git clone https://github.com/go-chassis/go-chassis initialized empty git repository in /home/test1280/go-chassis/.git/ remote: enumerating objects: 53, done. remote: counting obj…

git:fatal: unable to find remote helper for 'https'

git:fatal: unable to find remote helper for ‘https’ 复现 test1280 $ git clone https://github.com/go-chassis/go-chassis cloning into go-chassis... fatal: unable to find remote helper for httpstest1280 $ echo $path /home/test1280/git/bin:/home…

c:strerror(或 inet_ntoa) 返回值默认整型截断导致进程核心转储 core dumped

c:strerror(或 inet_ntoa) 返回值默认整型截断导致进程核心转储 core dumped 测试环境: [test1280localhost ~]$ uname -a linux localhost.localdomain 2.6.32-642.el6.x86_64 #1 smp tue may 10 17:27:01 utc 2016 x86_64 x86…

windows:配置多网卡路由表(规则)

windows:配置多网卡路由表(规则) 有时出差到中国移动研究院,既要连接到内网指定服务器工作,又希望能连接外网随时能查一些资料。 但是内网和外网不通的,如何配置笔记本能实现多网卡路由? 前置…

c/c :linux select 1024 文件描述符限制

c/c:linux select 1024 文件描述符限制 通常来说,linux下select调用要求文件描述符的值小于1024,也就是说,fd set中的每个文件描述符的值域为:[0,1023]。 如果超过,linux下select调用会发生什么ÿ…

lua:使用元表实现的一种面向对象方法调用

lua:使用元表实现的一种面向对象方法调用 一、lua中的面向对象编程 lua中,面向对象编程主要是通过table来实现的。 lua中,定义对象及方法: 冒号定义,冒号引用 local obj {}function obj:setname(name)self.name …

go:源码的修改、调试

go:源码的修改、调试 需求: 1.通过修改go源码逻辑,实现想要的自定义功能。 例如:修改go的net/http等相关包的代码,内嵌针对http请求/应答的原始消息输出到日志,方便定位排查。 2.临时修改go源码逻辑&am…

linux:常用压缩及解压缩命令

linux:常用压缩及解压缩命令 后缀:tar解包:tar xf redis-4.0.10.tar打包:tar cf redis-4.0.10.tar redis-4.0.10说明:-c, --createcreate a new archive-x, --extract, --getextract files from an archive-f, --filea…
网站地图