Subject: Re: RFC [PATCH net-2.6 1/6] net: Scheduling softirqs between CPUSs

From: Ben Hutchings <[email-masked]>
Date: Tue, 11 Mar 2008 16:52:54 +0000

Tom Herbert wrote:
> >  Could we use something like this to reschedule NAPI onto other
> >  processors?  If we get unlucky enough to have multiple napi routines
> >  polling on a single CPU, and one or more completely idle CPUs (idle at
> >  least for softirq) then we could really use one or the other of these
> >  solutions.
> 
> Jesse,
> 
> This patch does provide a general mechanism to schedule (or
> reschedule) NAPI to other CPUs.  We implemented two scheduling
> algorithms: 1) round robin scheduling of NAPI poll function across a
> set of CPUs on a per device basis 2) scheduling stack processing by
> directing packets to a CPU (using backlog queue); a hash is done on
> the 4-tuple to direct the packets for a connection to same CPU thus
> emulating HW RSS (we will add support for those devices that can
> provide the computed hash per packet).

Recent versions of Windows that are aware of RSS will instruct network
drivers to update their RSS indirection tables so that received
packets are handled on the same CPU as the thread likely to use the
received data.  This requires that the network stack knows the hash
function, so Microsoft specified a "Toeplitz hash" for IPv4 and IPv6.
You can expect that most hardware RSS implementations will use this
function and not a simple XOR.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.