Xenomai中如果想要把来绑定中断到对应的CPU上可以使用如下API, 当然前提是你必须保证中断控制器提供对应的支持.
比如将IRQ绑定到CPU1上:
rthal_set_irq_affinity(IRQ_NUMBER, xnarch_cpumask_of_cpu(1));
另外, 只能在内核空间中调用上述的接口.
关于中断亲和性,参考如下内容: http://ju.outofmemory.cn/entry/139
SMP IRQ affinity
Linux 2.4内核之后引入了将特定中断绑定到指定的CPU的技术,称为SMP IRQ affinity.
原理
当一个硬件(如磁盘控制器或者以太网卡), 需要打断CPU的工作时, 它就触发一个中断. 该中断通知CPU发生了某些事情并且CPU应该放下当前的工作去处理这个事情. 为了防止多个设置发送相同的中断, Linux设计了一套中断请求系统, 使得计算机系统中的每个设备被分配了各自的中断号, 以确保它的中断请求的唯一性. 从2.4 内核开始, Linux改进了分配特定中断到指定的处理器(或处理器组)的功能. 这被称为SMP IRQ affinity, 它可以控制系统如何响应各种硬件事件. 允许你限制或者重新分配服务器的工作负载, 从而让服务器更有效的工作. 以网卡中断为例,在没有设置SMP IRQ affinity时, 所有网卡中断都关联到CPU0, 这导致了CPU0负载过高,而无法有效快速的处理网络数据包,导致了瓶颈。 通过SMP IRQ affinity, 把网卡多个中断分配到多个CPU上,可以分散CPU压力,提高数据处理速度。
标签:设定,中断,IRQ,亲和性,SMP,网卡,affinity,Xenomai,CPU From: https://blog.51cto.com/u_16097040/6244036