绑定 Nginx 进程到不同的 CPU 上

为什么要绑定 Nginx 进程到不同的 CPU 上 :默认情况下,Nginx 的多个进程有可能跑在某一个 CPU 或 CPU 的某一核上,导致 Nginx 进程使用硬件的资源不均,因此绑定 Nginx 进程到不同的 CPU 上是为了充分利用硬件的多 CPU 多核资源的目的。

[[email protected] ~]# grep -c processor /proc/cpuinfo    # 查看CPU核数
2
worker_processes  2;         # 2核CPU的配置
worker_cpu_affinity 01 10;
worker_processes  4;         # 4核CPU的配置
worker_cpu_affinity 0001 0010 0100 1000;    
worker_processes  8;         # 8核CPU的配置
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 1000000;
[[email protected] ~]# /usr/local/nginx/sbin/nginx -t
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
[[email protected] ~]# cd /usr/local/src/   # 进行压力测试,教程:http://os.51cto.com/art/201202/317803.htm
[[email protected] src]# wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
[[email protected] src]# tar -zxvf webbench-1.5.tar.gz
[[email protected] src]# cd webbench-1.5
[[email protected] src]# yum install -y ctags gcc
[[email protected] src]# mkdir -m 644 -p /usr/local/man/man1
[[email protected] src]# make && make install
[[email protected] src]# webbench -c 10000 -t 60 http://192.168.5.131/
[[email protected] ~]# top    # 按1查看CPU调度结果,这里是虚拟机测试,效果并不太明显
top - 14:44:46 up 4:40, 3 users, load average: 0.01, 0.32, 0.24
Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.8%us, 0.8%sy, 0.0%ni, 97.9%id, 0.3%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu1 : 0.6%us, 0.7%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 1534840k total, 304824k used, 1230016k free, 3932k buffers
Swap: 204792k total, 0k used, 204792k free, 191364k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4319 root 20 0 98308 3932 2964 S 3.2 0.3 0:15.76 sshd
18989 root 20 0 15016 1292 1008 R 1.6 0.1 0:00.04 top
1 root 20 0 19232 1388 1112 S 0.0 0.1 0:02.19 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.08 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.61 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:03.60 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.50 watchdog/0
时间: 2024-10-13 06:52:18

绑定 Nginx 进程到不同的 CPU 上的相关文章

设置NGINX进程分配至多核CPU提升性能

Nginx 配置文件 nginx.conf 首先需要找到 Nginx 的配置文件 nginx.conf 才能进行下面的操作,在LNMP一键安装包默认配置下,nginx.conf 存放在/usr/local/nginx/conf/nginx.conf至于其他环境下安装 Nginx 可以用find / -name nginx.conf来查找配置文件的存放路径. Nginx worker_processes进程数设置 Nginx 的配置文档 nginx.conf 中可以设置 worker_proces

linux下将不同线程绑定到不同core和cpu上——pthread_setaffinity_np

=============================================================== linux下的单进程多线程的程序,要实现每个线程平均分配到多核cpu,主要有2个方法 1:利用linux系统自己的线程切换机制,linux有一个服务叫做irqbalance,这个服务是linux系统自带的,默认会启动,这个服务的作用就是把多线程平均分配到CPU的每个核上面,只要这个服务不停止,多线程分配就可以自己实现.但是要注意,如果线程函数内部的有某个循环,且该循环内

vcpupin和taskset命令设置某虚拟机在某个固定cpu上运行

Taskset命令设置某虚拟机在某个固定cpu上运行 1)设置某个进程pid在某个cpu上运行: [[email protected]~]# taskset -p000000000000000000000000000000000000100 95090 pid 95090's current affinity mask: 1 pid 95090's new affinity mask: 100 解释:设置95090这个进程,在cpu8上运行 95090是我提前用ps –aux|grep "虚拟机

利用taskset命令,将某进程绑定到某个CPU上

taskset (util-linux-ng 2.17.2) usage: taskset [options] [mask | cpu-list] [pid | cmd [args...]] set or get the affinity of a process   -p, --pid                  operate on existing given pid   -c, --cpu-list             display and specify cpus in l

linux 将进程或者线程绑定到指定的cpu上

基本概念 cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性:再简单的点的描述就将指定的进程或线程绑定到相应的cpu上:在多核运行的机器上,每个CPU本身自己会有缓存,缓存着进程使用的信息,而进程可能会被OS调度到其他CPU上,如此,CPU cache命中率就低了,当绑定CPU后,程序就会一直在指定的cpu跑,不会由操作系统调度到其他CPU上,性能有一定的提高. 软亲和性(affinity) 就是进程要在指

taskset: 让进程运行在指定的CPU 上

观察发现4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态. 不了解Linux是如何调度的,但目前显然有优化的余地.除了处理正常任务,CPU#0还需要处理每秒网卡中断.因此,若能将CPU#0分担的任务摊派到其他CPU核心上,可以预见,系统的处理能力将有更大的提升. 两个名词 SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构. [更多...] CPU affinity:中文

NGINX源码剖析 之 CPU绑定(CPU亲和性)

作者:邹祁峰 邮箱:[email protected] 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自"祁峰"的CSDN博客 1 引言   非统一内存访问(NUMA)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置. 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些. 针对NUMA架构系统的特点,可以通过将进程/线程

linux top cset schedtool 对于多核CPU,如何限制进程在一个CPU上运行

对于多核CPU,如何限制进程在一个CPU上运行呢? 如何察看某个进程在哪个CPU上运行: 在控制台中输入: #top -d 1 之后按下f.进入top Current Fields设置页面: 选中:j: P          = Last used cpu (SMP) 则多了一项:P 显示此进程使用哪个CPU. 经过试验发现:同一个进程,在不同时刻,会使用不同CPU Core.这应该是Linux Kernel SMP处理的. 本程序通过这个方法查看,将会在多个CPU上运行. 想要让它在一个CPU

Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?

问题:我有个 Linux 进程运行在多核处理器系统上.怎样才能找出哪个 CPU 内核正在运行该进程? 当你在 多核 NUMA 处理器上运 行需要较高性能的 HPC(高性能计算)程序或非常消耗网络资源的程序时,CPU/memory 的亲和力是限度其发挥最大性能的重要因素之一.在同一 NUMA 节点上调度最相关的进程可以减少缓慢的远程内存访问.像英特尔 Sandy Bridge 处理器,该处理器有一个集成的 PCIe 控制器,你可以在同一 NUMA 节点上调度网络 I/O 负载(如网卡)来突破 PC