relationship between cpu_affinity and Packet RX Processing

Arlie Stephens arlie at worldash.org
Tue Mar 26 14:45:55 EDT 2013


Hi Amit,

On Mar 26 2013, Kumar amit mehta wrote:
> 
> Hi All,
> 
> I was reading some stuff on interrupts and irq lines today and I thought I'll
> expermient with the network rx path. To start with, I've a Virtual Machine
> running 3.8 linux kernel. My machine has 4 CPU cores, network (eth) interface 
> is driven by pcnet_32 AMD driver and is tied to IRQ line #19. I started some
> network traffic and I notice that out of those 4 CPUs, only one of them is being
> used and despite changing the CPU affinity, I still don't see the other cores
> being used for this network traffic. So based on this behavior(please see the
> logs below), I've these following queries:
> i) Does it mean that this network card do not have multiple Rx
> Queues ?

I don't know for sure what linux does, but the NICs I've seen with
multiple queues tend to select queues by hashing incoming packets
based on source IP, sourse port, destination IP, destination port and
(if TCP) protocol.  

This is done because you generally want all packets for a given
connection in the same queue. 

For a single ping, always to the same destination, all packets will
hash the same, and so wind up in the same queue. 

> ii) I think all the modern NICs must be implementing multiple Rx Queues and
> hence Can someone please point me to the simplest of such implemenation in any
> of the in-tree drivers ?
> iii) I'm just doing a simple 'ping' to google with of big size packets, As I do 
> not have a peer to use packetgen/netperf/iperf utilities.

--
Arlie



More information about the Kernelnewbies mailing list