您的位置:首页 > 编程语言 > Java开发

如何让进程运行在指定的cpu上

2016-06-12 21:12 393 查看
1、在linux下修改进程的“cpu亲和力”

  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开始计数)。http://write.blog.csdn.net/postedit?ticket=ST-133194-dCdOr36vRfv7GrhbyGZf-passport.csdn.net

3)进程启动时指定CPU

命令taskset -c 1 ./redis-server ../redis.conf

 

结合这上边三个例子,再看下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、配置nginx绑定cpu

在conf/nginx.conf中

worker-processes  1;

指一个cpu,如有4个u的话,为worker-processes  3;worker-cpu-affinity 0010 0100 1000,分别代码u 2、3、4的核心

重启nginx后,3个进程各自用各自的进程。注:此nginx.conf配置参数网上资料

3、刨根问底

4、windows下修改cpu“亲和力”





注:图片来自网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  技术 java优化