On Wednesday 01 February 2006 14:48, Leonid Grossman wrote:
> David S. Miller wrote:
> 
> > And with Van Jacobson net channels, none of this is going to 
> > matter and 512 is going to be your limit whether you like it 
> > or not.  So this short term complexity gain is doubly not justified.
> 
> 
> David, can you elaborate on this upcoming implementation (timeframe,
> description if any, etc)?

There are some slides on the web, but I failed to fully understand
the concept just from them - maybe I'm just not clever enough @)

http://www.lemis.com/grog/Documentation/vj/lca06vj.pdf

Some details seem to be missing at least:
- a description of TX (he hinted at eliminating hard_start_xmit
somehow at one slide, but everything else was only on RX) 
- how the NIC selects the socket to connect to directly
(e.g. with what does he replace the ETH/IP/TCP demux tables)
- What his problem with softirqs was. They are fully parallelized
in Linux and completely cache hot with their feeding interrupts,
so I didn't quite follow why he wanted to eliminate them.
- how exactly the drivers become more simple and what the generic
functions he wants to replace driver code with do.

I liked the concept of the cache friendlier"array queues", but as far as I can 
see there should be usually only one hand off between different
CPUs for RX, so I'm not sure they will make that much difference. 
And longer term this handoff can be eliminated with hardware queue
support anyways when we manage to get the NIC to send an MSI
to the right CPU. Then everything will be CPU local.

Hopefully there is a patch available soon to make this all clear.

> I assume these net channels are per cpu? What's the relation to NAPI?
> 
> This sounds like something we can "connect" our driver/ASIC queues to,
> in order to extend the channels all the way to 10GbE PHY.

I think the basic problem of that is still unsolved. The only really
scalable way to do such connections seem to be RX hashing and send
MSIs to different CPUs based on that.  But it is still not fully clear how 
to get the Linux scheduler to cooperate with that so that the socket
consumers end up at the right CPUs selected by the driver hash.

-Andi (who prefers sourceware over slideware)
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to