用 Gearman 搭建 Map/Reduce ,GearmanManager 来管理所有的 workers。启动多个 gearman-manager daemon,为了充分利用服务器资源,使其运行于不同的 CPU 内核上。
假设启动 10 个gearman-manager daemon,CPU 是 4核。
[root@www ~]# ps aux | grep gearman-manager | awk {'print $2;'} | sort -k1,1 | head -3 | xargs -n 1 taskset -cp 0
[root@www ~]# ps aux | grep gearman-manager | awk {'print $2;'} | sort -k1,1 | tail -3 | xargs -n 1 taskset -cp 1
[root@www ~]# ps aux | grep gearman-manager | awk {'print $2;'} | sort -k1,1 | sed -n '4,7p' | xargs -n 1 taskset -cp 2
上面命令是将前 3 个 deamon 运行于 CPU#0 (CPU 第一个核 上,从 0 开始计数),中间 4个运行于 CPU#2,最后三个运行于 CPU#1。
Backgrounds: 榨干服务器:让进程运行在指定的CPU
两个名词: SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多 CPU),各 CPU 之间共享内存子系统以及总线结构。 [MORE...] CPU affinity:中文唤作「CPU亲和力」,是指在 CMP 架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。[MORE...]
top
命令,回车后输入 1
查看所有 CPU 的使用情况:
conf/nginx.conf
中,有如下一行:
worker_processes 1;
这用来配置 Nginx 启动几个工作进程,默认为 1。Nginx 还支持 worker_cpu_affinity
配置项,即 Nginx 可以为 每个工作进程绑定 CPU。例:
worker_process 3; worker_cpu_affinity 0010 0100 1000;
0010
,0100
,1000
是掩码,分别代表第 2,3,4 颗 CPU 核。重启 Nginx,3 个工作进程就可以各自用各自的 CPU 。
Via: http://blogread.cn/it/article/5985?f=sr