Skip to contentSkip to conversation

How to distribute IRQs to all cores

DISCUSSION J.Hwan Kim 2 participants 3 messages Aug 25, 2011 – Aug 26, 2011

lore
Share & tools
lore

J.Hwan Kim

author
#0 lore raw

Hi, everyone

The interrupts of my ixgbevf driver occurs only Core 0 although the user space "irqbalance" serivce is working.

How can I distribute the interrupt of RX in ixgbevf to all cores? Is there any kernel compile option for it ?

cat /proc/interrupts | grep "isv"
97: 8 0 0 0 0
0 0 0 PCI-MSI-edge isv0-rx-0
99: 7 0 0 0 0
0 0 0 PCI-MSI-edge isv0:lsc
103: 2059 0 0 0 0
0 0 0 PCI-MSI-edge isv2-rx-0
104: 14 0 0 0 0

0          0          0   PCI-MSI-edge      isv2-tx-0
  105:          1         0          0          0          0          
0          0          0   PCI-MSI-edge      isv2:mbx

"isv" is netdevice name of my ixgbevf.

Thanks in advance.

Best Regards,

J.Hwan Kim

#1 lore raw

Try programming the CPU-irq affinity by writing to

/proc/irq/<irq-number>/smp_affinity

For example masks for irqs could be :
irq 97 - 0x1
99 - 0x2
103 - 0x4
104 - 0x8

That way, you are hardcoding on which cpu the particular irqs should land.

HTH
Akash

Quoted 27 lines · J.Hwan Kim

Hi, everyone

The interrupts of my ixgbevf driver occurs only Core 0 although the user space "irqbalance" serivce is working.

How can I distribute the interrupt of RX in ixgbevf to all cores? Is there any kernel compile option for it ?

cat /proc/interrupts | grep "isv"

  97:          8          0          0          0          0
0          0          0   PCI-MSI-edge      isv0-rx-0
  99:          7          0          0          0          0
0          0          0   PCI-MSI-edge      isv0:lsc
 103:       2059      0          0          0          0
0          0          0   PCI-MSI-edge      isv2-rx-0

104: 14 0 0 0 0
0 0 0 PCI-MSI-edge isv2-tx-0
105: 1 0 0 0 0
0 0 0 PCI-MSI-edge isv2:mbx

"isv" is netdevice name of my ixgbevf.

Thanks in advance.

Quoted 9 lines

Best Regards,

J.Hwan Kim

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110825/3ba4edb9/attachment.html

author
#2 lore raw
Quoted 39 lines · Akash

Try programming the CPU-irq affinity by writing to

/proc/irq/<irq-number>/smp_affinity

For example masks for irqs could be :
irq 97 - 0x1
99 - 0x2
103 - 0x4
104 - 0x8

That way, you are hardcoding on which cpu the particular irqs should land.

HTH
Akash

On Thu, Aug 25, 2011 at 4:08 AM, J.Hwan Kim <[email protected] <mailto:[email protected]>> wrote:

Hi, everyone

The interrupts of my ixgbevf driver occurs only Core 0 although the user space "irqbalance" serivce is working.

How can I distribute the interrupt of RX in ixgbevf to all cores? Is there any kernel compile option for it ?

cat /proc/interrupts | grep "isv"
97: 8 0 0 0 0
0 0 0 PCI-MSI-edge isv0-rx-0
99: 7 0 0 0 0
0 0 0 PCI-MSI-edge isv0:lsc
103: 2059 0 0 0 0
0 0 0 PCI-MSI-edge isv2-rx-0
104: 14 0 0 0 0
0 0 0 PCI-MSI-edge isv2-tx-0
105: 1 0 0 0 0
0 0 0 PCI-MSI-edge isv2:mbx

Quoted 2 lines

"isv" is netdevice name of my ixgbevf.

Thank you for reply.
I want to distribute, for example, IRQ 103 to all cores as follows :
103 : 111 2344 1334 3233 2233 1111 2233 362262 isv2-rx-0 That cannot be achieved by setting /proc/irq/irq-num/smp_affinity.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110826/325ee98d/attachment.html