无法更新smp_affinity

作为我们在Linux机器上运行以优化应用程序性能的实验的一部分,我们试图将所有networking中断分配给单个CPU核心。

不幸的是,它似乎没有按照它应该的方式工作。 例如我们在这里有一个中断:

[root@shou18librh05 ~]# cat /proc/interrupts | grep 107 107: 0 0 0 0 0 0 0 0 PCI-MSI-X eth-mlx4-0 

它目前在哪里处理?

 [root@shou18librh05 ~]# cat /proc/irq/107/smp_affinity 7fffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff 

试图将其转移到第一个核心:

 [root@shou18librh05 ~]# echo 1 > /proc/irq/107/smp_affinity 

它移动了吗?

 [root@shou18librh05 ~]# cat /proc/irq/107/smp_affinity 7fffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff 

没有…

有没有人有一个想法,为什么这可能发生? 谷歌search没有给出任何明显的解决scheme/提示…

Linux是:

 [root@shou18librh05 ~]# uname -a Linux shou18librh05 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux 

系统中可能有一些禁用的设备利用了CPU1的中断向量空间,尤其是在设备未启用的情况下,其中断号不会出现在/ proc / interrupts中。 irq到cpu的向量分配是在内核的APIC中完成的。

请尝试,如果它适合你:

  1. 识别任何未连接但尚未启用的设备,
  2. 启用它们,例如:ifup(用于接口)
  3. 他们的int数应该显示在/ proc / interrupts中
  4. 尝试并分配所有的中断,但所有的中断。
  5. 然后尝试分配CPU1中断您的喜好。 但请记住它们是每个CPU的向量空间限制,所以它们应该是特定CPU可以处理的最大中断数。