IRQ_BALANCE的CPU亲和性设置

上次说到,改通过改rx-usecs参数,更改了网卡中断的中断延时,从而优化了系统性能

后来发现一件事,就是程序运行的时间长了以后,滤波的那个线程经常会出现一段时间的性能下降,本来15us能完成的工作,变成26us才能完成了,实时性又保障不了了。而且不仅是滤波,连zmq的操作也变慢了,这就不单单是性能下降的问题,有可能是有任务调度到这个CPU核上了。想了一下,最有可能的就是系统的网卡中断。IRQ_BALANCE是负责网卡系统调用的均衡的,它会把包括网卡中断在内的一些操作的负载轮询分配到各个CPU核上。一旦和我们那个本来就已经高负载运行的滤波线程相同的核上,就会出现上述的效果了。

改起来也很简单

#vim /etc/sysconfig/irqbalance

把里面的IRQBALANCE_BANNED_CPUS参数做个改动,比如我们是28号核,就写IRQBALANCE_BANNED_CPUS=10000000,表示第29个逻辑核不参与IRQ_BALANCE的轮询。这个值是16进制的,每一个bit从右往左表示编号从低到高的CPU核。有的环境下这个参数叫IRQ_AFFINITY_MASK,效果是一样的。

改好以后执行

#service irqbalance restart

重启服务,让刚才的改动生效 就行了

你可能感兴趣的:(实验室工作)