Routing enhancement - reduce routing table locking

Ingo Flaschberger if at xip.at
Mon Apr 18 21:15:49 UTC 2011


> It occurred to me that I should add a couple of qualifications to the
> previous statements. 1.6Mpps is line rate for GigE and I only know of
> it to be achievable by igb hardware. The most I've seen em hardware
> achieve is 1.1Mpps. Furthermore, in order to achieve that you would
> have to enable IFNET_MULTIQUEUE in the driver, because by default the
> driver uses the traditional (slow) IFQ as opposed overloading
> if_transmit and doing its own queueing when needed. Support for
> efficient multi-queue software queueing is provided by buf_ring, a
> lock-free multi-producer ring buffer written just for this purpose.
>
> Thus, the fairly low transmit rate may be attributable to driver locking.

Currently the quad core hardware is in production, I can only test with 
the single core 1,2ghz pentiumM.
Also no igb cards.

em cards, 82541GI, with polling

8.2 i386 with patch rmlock-copy, 400k /32 routes, 64byte packets:
 		fastfw		standard	flowtable
1 dest:		85607pps	57189pps	57216pps
rand. dest:	83945pps	54976pps	55007pps

standard routing seems to be as fast as flowtable.
flowtable does not support fastforward, rmlock-copy-patch supports 
fastforward.

8.2 i386 w/o patch, 400k /32 routes, 64byte packets:
 		fastfw		standard	flowtable
1 dest:		84792pps	55357pps	55515pps
rand. dest:	80156pps	52320pps	52300pps

so even on a single cpu system less locking improve performance, but as 
you mentioned above, the bottlenecks of this system are the "desktop" 
pci network cards.

I would really like to see some compareable tests with 10gbe hardware.

Kind regards,
 	Ingo Flaschberger


More information about the freebsd-net mailing list