中断绑定
对于实时环境,我们需要消除或者最小化事件响应的延迟。要想做到这一点,需要将不同的中断响应(IRQs)和用户进程绑定到不同的CPU核心上,使他们彼此隔离。
为什么需要这样呢?
默认情况下,Linux的中断响应会被平均分配到所有CPU核心上,这样势必会发生写新的数据和指令缓存,而且还会与CPU核心上原来存在的进程产生冲突。这就会延迟中断响应,影响程序的处理时间。为了解决这个问题,可以将中断(或进程)绑定到指定的CPU核心上,这样该中断(或进程)所需要的代码和数据结构就有更高的可能性位于本地CPU的数据和指令缓存内,而不必进行新的写缓存,从而提高中断响应(或进程)的处理速度。此外,将某一个进程及其相关的中断绑定在同一个CPU核心上,使它们共享缓存线路,可以提高程序性能。还有,将彼此不相关的中断与进程绑定到不同的CPU核心上,可以避免冲突,也可以提高程序性能。
以上提到的方法对于延迟敏感的中断(或进程)是很有用的,同时这些方法对于处理速度受限于内存和总线带宽的情况也是很重要的。
接下来介绍如何实现中断绑定。
1.关闭中断平衡守护进程
中断平衡守护进程(irqbalance daemon)会周期性地将中断平均地公平地分配给各个CPU核心,它默认是开启的。为了实现中断绑定,首先需要将这个守护进程关