系统相关
首页 > 系统相关> > linux应用如何进行CPU绑定

linux应用如何进行CPU绑定

作者:互联网

所谓CPU绑定,其实就是对进程或者线程设置相应的CPU亲和力,确保进程或者线程只会在设置了相应标志位的CPU上运行,进而提高应用对CPU的使用率。如果应用可以在多个CPU上运行,操作系统会在CPU之间频繁切换应用,引起CPU缓存失效,降低缓存的命中率,导致CPU的使用率下降。所以,如果使用CPU绑定技术,在一定程度上会避免上述问题,提高系统性能,类似技术还有GPU绑定、mic绑定等等。

1、安装taskset命令

yum install util-linux

如果系统没有taskset明林,使用yum方式安装util-linux即可,这是一个工具集,其中包含taskset命令

2、查看应用的CPU亲和力

$ taskset -p 14795
pid 14795's current affinity mask: 3
$ taskset -cp 14795
pid 14795's current affinity list: 0,1

实例中,查看进程为14795的CPU亲和力,使用-p选项指定需要查询的进程号,默认打印的是一个十六进制数,如果使用-cp选项打印的一个CPU列表,表示相应的CPU核。3的二进制形式是0011,相应的第0位和第1位都是1,对应了-cp打印的0和1,表示14795进程只能运行在CPU的第0个核心和第1个核心上。

3、将应用绑定到指定的CPU运行

$ taskset -p 0x1 14795
pid 14795's current affinity mask: 3
pid 14795's new affinity mask: 1

或者

$ taskset -cp 0 14795
pid 14795's current affinity list: 0,1
pid 14795's new affinity list: 0

实例中,通过taskset命令重新设置了进程14795的CPU亲和力,前后2种方式设置效果一样,都表示进程14795只能运行在cpu的第0个核。因为-p指定的二进制形式是0001,第0位是1,表示第0个CPU核。-cp直接指定了0,也表示第0个CPU核。
除了通过taskset命令绑定应用到指定的CPU上,也可以通过taskset命令启动应用,并指定应用运行的CPU,例如:

$ taskset 0x1 sleep 10000 &
[2] 14925
$ taskset -p 14925
pid 14925's current affinity mask: 1
$ taskset -cp 14925
pid 14925's current affinity list: 0

示例中,通过taskset启动应用(使用sleep命令模拟应用),并设置相应的cpu亲和力,即进程14925只能运行在cpu的第0个核。启动程序后查看进程的cpu亲和力,和启动时设置的相同。

除了通过taskset启动应用(使用sleep命令模拟应用),并设置相应的CPU亲和力,即进程14925只能运行在CPU的第0个核心上。启动程序后查看进程的CPU亲和力,和启动时设置的相同。

另外,除了通过taskset命令实现CPU绑定,很多语言都提供了相应的api实现CPU绑定

转载自:https://cloud.tencent.com/developer/article/1145015

标签:绑定,pid,14795,affinity,taskset,linux,CPU
来源: https://www.cnblogs.com/liushiya/p/12827164.html