Subject: [ofa-general] Re: [PATCH 2/3][NET_BATCH] net core use batching

From: Jeff Garzik <[email-masked]>
Date: Mon, 08 Oct 2007 22:12:03 -0400

David Miller wrote:
> 1) A library for transmit load balancing functions, with an interface
>    that can be made visible to userspace.  I can write this and test
>    it on real multiqueue hardware.
> 
>    The whole purpose of this library is to set skb->queue_mapping
>    based upon the load balancing function.
> 
>    Facilities will be added to handle virtualization port selection
>    based upon destination MAC address as one of the "load balancing"
>    methods.

Groovy.

I'm interested in working on a load balancer function that approximates

	skb->queue_mapping = smp_processor_id()

I'd be happy to code and test in that direction, based on your lib.

> 2) Switch the default qdisc away from pfifo_fast to a new DRR fifo
>    with load balancing using the code in #1.  I think this is kind
>    of in the territory of what Peter said he is working on.
> 
>    I know this is controversial, but realistically I doubt users
>    benefit at all from the prioritization that pfifo provides.  They
>    will, on the other hand, benefit from TX queue load balancing on
>    fast interfaces.

IMO the net driver really should provide a hint as to what it wants.

8139cp and tg3 would probably prefer multiple TX queue behavior to match 
silicon behavior -- strict prio.

And I'll volunteer to write the net driver code for that, if people want 
to see how things would look for that type of hardware packet scheduling.

> 3) Work on discovering a way to make the locking on transmit as
>    localized to the current thread of execution as possible.  Things
>    like RCU and statistic replication, techniques we use widely
>    elsewhere in the stack, begin to come to mind.

Definitely.

	Jeff