Subject: Re: [PATCH] genirq: Set initial default irq affinity to just CPU0

From: "Chris Friesen" <[email-masked]>
Date: Mon, 27 Oct 2008 13:10:55 -0600

David Miller wrote:
> From: "Chris Friesen" <[email-masked]>

>> What about something like the Cavium Octeon, where we have 16 cores but a
>> single core isn't powerful enough to keep up with a gigE device?
> 
> Hello, we either have hardware that does flow seperation and has multiple
> RX queues going to multiple MSI-X interrupts or we do flow seperation in
> software (work in progress patches were posted for that about a month ago,
> maybe something final will land in 2.6.29)

Are there any plans for a mechanism to allow the kernel to figure out (or be 
told) what packets cpu-affined tasks are interested in and route the 
interrupts appropriately?

> Just moving the interrupt around when not doing flow seperation is as 
> suboptimal as you can possibly get.  You'll get out of order packet 
> processing within the same flow, TCP will retransmit when the reordering
> gets deep enough, and then you're totally screwed performance wise.

Ideally I agree with you.  In this particular case however the hardware is 
capable of doing flow separation, but the vendor driver doesn't support it 
(and isn't in mainline).  Packet rates are high enough that a single core 
cannot keep up, but are low enough that they can be handled by multiple cores 
without reordering if interrupt mitigation is not used.

It's not an ideal situation, but we're sort of stuck unless we do custom 
driver work.

Chris