如何设置一个特定的线程CPU亲和力

如何设置一个特定的线程CPU亲和力,第1张

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 3worker-cpu-affinity 0010 0100 1000,分别代码u 2、3、4的核心

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

3、刨根问底

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

worker_processes 2

worker_cpu_affinity 01 10

01表示启用第一个CPU内核,10表示启用第二个CPU内核

worker_cpu_affinity 01 10表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。

worker_processes 4

worker_cpu_affinity 01 10 01 10

开启了四个进程,它们分别对应着开启2个CPU内核

worker_processes 4

worker_cpu_affinity 0001 0010 0100 1000

0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

worker_processes 2

worker_cpu_affinity 0101 1010

0101表示开启第一个和第三个内核,1010表示开启第二个和第四个内核

2个进程对应着四个内核

worker_cpu_affinity配置是写在/etc/nginx/nginx.conf里面的。

2核是 01,四核是0001,8核是00000001,有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。

worker_processes 8

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000

0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。

配置完毕后,重启nginx

测试nginx是否有用到多个CPU内核 ,在另一台机器上执行ab -c 1000 -n 1000 http://www.domain.com/index.php

ab是装apache后带的一个性能测试工具,它可以模拟多客户端的并发请求。

在服务器上执行top,然后按1,就可以看到CPU内核的工作情况。如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/267723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存