taskset的简单用法--进程绑核

目录

引言:

一、什么是绑核

二、如何绑核

2.1 掩码形式绑核

2.2 列表形式 

三、taskset的用法

3.1 taskset常用参数

3.2 下载taskset工具

3.3 查看版本

3.4 将指定进程绑定指定cpu

四、总结

引言:

因为cache的影响,linux为了性能,调度器本身倾向于让同一个进程跑在同一个CPU上面,taskset可以用来设置一个已有进程或者新创建进程的CPU亲和力,可以让进程在指定的CPU上运行。

一、什么是绑核

所谓绑核,其实就是设定某个进程/线程与某个CPU核的亲和力(affinity)。设定以后,Linux调度器就会让这个进程/线程只在所绑定的核上面去运行。但并不是说该进程/线程就独占这个CPU的核,其他的进程/线程还是可以在这个核上面运行的。如果想要实现某个进程/线程独占某个核,就要使用cpuset命令去实现。

其实,很多情况下,为了提高性能,Linux调度器会自动实现尽量让某个进程/线程在同样的CPU上去运行。所以,除非必须,我们没有必要显式的去进行进程绑核操作。

二、如何绑核

taskset用于将某个进程/线程绑定到CPU的某个或某几个核上面,其用法如下:

taskset -p pid

可以查出进程pid现在的绑核情况。

设置绑核有两种方法:

  • 掩码形式
  • 列表形式

2.1 掩码形式绑核

将掩码转换为二进制形式,从最低位到最高位代表物理CPU的#0、#1、……、#n号核。某位的值为0表示不绑该核,1表示绑。比如:0x00000001的二进制为0000...0001,只有第0号核的位置是1,所以表示只绑0号核;0x00000003的二进制为0000...0011,第0和1号核的位置是1,所以表示绑CPU的0号和1号核;再比如0xFFFFFFFF的二进制为1111...1111,所有32个核的位置都为1,所以表示绑CPU的0~31核。

需要注意的是,并非掩码中给出的CPU核就一定会存在,比如0x00000400理论上代表CPU的第10号核,但是该核在真正的计算机上面并不一定是存在的。而且,如果我们试图将物理上并不存的核绑定给某个进程时,会返回错误。掩码形式的绑核命令为:

taskset -p mask pid

2.2 列表形式 

列表形式指直接指定要绑的CPU核的列表,列表中可以有一个或多个核。具体语法如下:

taskset -cp cpu-list pid

其中cpu-list是数字化的cpu列表,从0开始。多个不连续的cpu可用逗号连接,连续的可用短现连接,比如0,2,5-11等。

比如taskset -cp 0,2,5-11 9865命令表示将进程9865绑定到#0#2#5~#11号核上面。

三、taskset的用法

3.1 taskset常用参数

-a, --all-tasks 操作所有的任务线程
-p, --pid 操作已存在的pid
-c, --cpu-list 通过列表显示方式设置CPU(逗号相隔)
-V, --version           输出版本信息

3.2 下载taskset工具

yum install util-linux -y

3.3 查看版本

taskset -V

3.4 将指定进程绑定指定cpu

ps -aux |grep nginx查看pid

taskset -pc 1 9138

Pid 9138的当前关联列表:01  

Pid 9138的新关联列表

查询pid是否在外面设定的CPU核心上运行
taskset -pc 9138

 

四、总结

只要taskset成功返回了,那就表示绑核一定成功了,即该进程已被绑到指定的核上面,而且taskset命令会显示原来的绑核(原来的可能是系统默认分配的核)情况,以及新的绑核情况。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值