________________________________
 From: Adrian Chadd <adr...@freebsd.org>
To: Barney Cordoba <barney_cord...@yahoo.com> 
Cc: Luigi Rizzo <ri...@iet.unipi.it>; Lawrence Stewart <lstew...@freebsd.org>; 
FreeBSD Net <n...@freebsd.org> 
Sent: Saturday, August 17, 2013 11:59 AM
Subject: Re: it's the output, not ack coalescing (Re: TSO and FreeBSD vs Linux)
 


... we get perfectly good throughput without 400k ints a second on the ixgbe 
driver.

As in, I can easily saturate 2 x 10GE on ixgbe hardware with a handful of 
flows. That's not terribly difficult.

However, there's a few interesting problems that need addressing:

* There's lock contention between the transmit side from userland and the TCP 
timers, and the receive side with ACK processing. Under very high traffic load 
a lot of lock contention stalls things. We (the royal "we", I'm mostly just 
doing tooling at the moment) working on that.
* There's lock contention on the ARP, routing table and PCB lookups. The latter 
will go away when we've finally implemented RSS for transmit and receive and 
then moved things over to using PCB groups on CPUs which have NIC driver 
threads bound to them.
* There's increasing cache thrashing from a larger workload, causing the 
expensive lookups to be even more expensive.
* All the list walks suck. We need to be batching things so we use CPU caches 
much more efficiently.

The idea of using TSO on the transmit side and generic LRO on the receive side 
is to make the per-packet overhead less. I think we can be much more efficient 
in general in packet processing, but that's a big task. :-) So, using at least 
TSO is a big benefit if purely to avoid decomposing things into smaller mbufs 
and contending on those locks in a very big way.

I'm working on PMC to make it easier to use to find these bottlenecks and make 
the code and data more efficient. Then, likely, I'll end up hacking on generic 
TSO/LRO, TX/RX RSS queue management and make the PCB group thing default on for 
SMP machines. I may even take a knife to some of the packet processing overhead.

-------------------------------

The ints/sec reference was based on Luigi's implication that turning off 
moderation was some sort of performance choice.

Again, you're talking "throughput" and not efficiency. I could fill a tx queue 
with 10gb of traffic with  yesteryear's cpus. It's not an achievement. Being 
able to bridge 
real traffic at 10gb/s with 2 cores is.

BC
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to