如何绑定进程到指定的CPU在任务管理器中右键该进程,选择设置相关性,勾选你希望关联的CPU即可 。 coolshell最新的文章《性能调优攻略》在“多核cpu调优”章节,提到“我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配cpu核,而不会过多地占用cpu0,或是让我们关键进程和一堆别的进程挤在一起 。 ” 。 在文章中提到了linux下的一个工具,taskset,可以设定单个进程运行的cpu 。 
同时,因为最近在看redis的相关资料,redis作为单进程模型的程序,为了充分利用多核cpu,常常在一台server上会启动多个实例 。 而为了减少切换的开销,有必要为每个实例指定其所运行的cpu 。 
下文,将会介绍taskset命令,以及sched_setaffinity系统调用,两者均可以指定进程运行的cpu实例 。 
1.taskset 
taskset是linux提供的一个命令(ubuntu系统可能需要自行安装,schedutils package) 。 他可以让某个程序运行在某个(或)某些cpu上 。 
以下均以redis-server举例 。 
1)显示进程运行的cpu 
命令taskset -p 21184 
显示结果: 
pid 21184’s current affinity mask: ffffff 
注:21184是redis-server运行的pid 
显示结果的ffffff实际上是二进制24个低位均为1的bitmask,每一个1对应于1个cpu,表示该进程在24个cpu上运行 
2)指定进程运行在某个特定的cpu上 
命令taskset -pc 3 21184 
显示结果: 
pid 21184’s current affinity list: 0-23 
pid 21184’s new affinity list: 3 
注:3表示cpu将只会运行在第4个cpu上(从0开始计数) 。 
3)进程启动时指定cpu 
命令taskset -c 1 ./redis-server ../redis.conf 
【进程绑定核 进程绑定cpu】结合这上边三个例子,再看下taskset的manual,就比较清楚了 。 
options 
-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. 
2.sched_setaffinity系统调用 
sched_setaffinity可以将某个进程绑定到一个特定的cpu 。 你比操作系统更了解自己的程序,为了避免调度器愚蠢的调度你的程序,或是为了在多线程程序中避免缓存失效造成的开销,你可能会希望这样做 。 

文章插图
进程在使用cpu时处于什么状态处于就绪状态 。
1. 进程在执行过程中不同时刻的基本状态是运行状态、就绪状态和等待状态 。
2. 一个已经具备运行条件,但由于没有获得CPU而不能运行的进程处于就绪状态 。
- 电脑cpu不够用 cpu不够用怎么办
- 1135g7 cpu性能 cpu性能查询
- 速卖通商标授权审核要多久?多久会过?
- CPU的核显性能 cpu的核显
- cpu休眠是什么状态 cpu休眠
- 京东秒杀超值清单报名要求和审核规则大全
- 京东拼购商家审核要多久?相关问题解答
- 淘宝银行卡怎么解绑?可以绑定多少张?
- 淘宝金牌卖家多久考核一次?满足条件是什么?
- 天猫U先计入最低价吗?为什么审核不通过?
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
