bge dropping packets issue

Robert Watson rwatson at FreeBSD.org
Thu Apr 17 15:11:59 UTC 2008


On Thu, 17 Apr 2008, Alexander Sack wrote:

> Gotcha, this is really good to know.  FreeBSD is a new OS for me to work on 
> but I'm learning so much everyday!  I believe Solaris uses ithreads natively 
> and I do know there are some drivers that forcefully create kernel threads 
> to handle interrupts as way to scale (I have no idea the ramification of 
> this on FreeBSD or if the overhead of creating a new kthread outweighs the 
> benefits).

This is also true on FreeBSD -- on the whole, drivers up to 1gbps create one 
ithread per device (typically interface), but our 10gbps drivers 
[increasingly] instantiate multiple ithreads and direct traffic to multiple 
CPUs using different MSIX interrupts.  So for 1gbps forwarding or bridging 
with if_em, we'll run the code in two ithreads.  We direct dispatch our 
network stack by default in 7.x, meaning that we run everything up to local 
socket delivery in the ithread.  If you're doing multi-interface forwarding, 
you might experiment with setting net.isr.direct=0 (via sysctl) to see how 
that affects performance -- this pushes network layer (and higher) processing 
to a separate netisr thread.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-net mailing list