在nginx服务器上,对多颗cpu做亲和性绑定
CPU亲和性修改
#taskset -p mask pid pID和-p之间加上CPU掩码!CPU掩码:假设有4课CPU,第一颗便是:0000,第二颗0001,第三颗0101,第四颗1111也可使用-c选项提供都好分开的独立处理器,或者一组处理器列表,如下:#taskset -c 0,1,2-4 -- myprogram从第0颗开始,以逗号分隔查看服务运行在那棵cpu上:#ps axo psr,comm,pid便可以看到服务运行cpu的状态。例:将PID为11215修改到第三颗cpu,如下:#taskset -p -c 3 11215cat /proc/cpuinfo查看cpu信息不过,这种绑定下次启动PID可能将会改变。然而这种绑定并没有起到理想的状态vim /etc/grub.conf在kernel 后加上isol=2,3,这种方式也只能隔离CPU,仍然不能隔离中断,如果需要,则需要中断绑定中断隔离;中断查看:cat /proc/interrupts一般情况cpu0的中断相对较多假设4颗CPU,将2和3隔离到0,1查看下目录ls /proc/irq/使用IRQ数定位正确的smp_affinity文件cat /proc/irq/0/smp_affinitysmp_affinity默认为f(64位的操作系统为两组f,每一个f为4位)即可为系统中任意的cpu提供的IRQ。将这个值设定为1,如下,即表示只有cpu 0可以提供这个中断#echo 1 > /proc/irq/32/smp_affinity#cat /proc/irq/32/smp_affinity1如果将其他U的系统中断定义到0上面,那么其他U的中断则被清到0上,这个依然需要系统脚本来实现。当然,这种极限压榨系统性能可能会造成系统不稳定。生产环境还是规范处理,亲和性CPU绑定是可以的。numactl结构遇到的可能不太多,numad进行CPU绑定。进程优先级,nice,renicecpu实时优先级和策略