ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux应用如何进行CPU绑定

2020-05-04 17:03:49  阅读:362  来源: 互联网

标签:绑定 pid 14795 affinity taskset 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有