Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Apr 2008 16:11:57 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Alexander Sack <pisymbol@gmail.com>
Cc:        freebsd-net@freebsd.org, Dieter <freebsd@sopwith.solgatos.com>, Jung-uk Kim <jkim@freebsd.org>
Subject:   Re: bge dropping packets issue
Message-ID:  <20080417160922.X77343@fledge.watson.org>
In-Reply-To: <3c0b01820804170752x68714a6cj10919e6cb7ffda16@mail.gmail.com>
References:  <3c0b01820804160929i76cc04fdy975929e2a04c0368@mail.gmail.com>  <200804161456.20823.jkim@FreeBSD.org> <3c0b01820804161328m77704ca0g43077a9718d446d4@mail.gmail.com> <200804161654.22452.jkim@FreeBSD.org> <3c0b01820804161402u3aac4425n41172294ad33a667@mail.gmail.com> <20080417112329.G47027@delplex.bde.org> <3c0b01820804170643w6b771ce9jdfc2dc5b240922b@mail.gmail.com> <20080417145652.J71628@fledge.watson.org> <3c0b01820804170705l9c196d9rff45fa4919ace8c@mail.gmail.com> <20080417152837.E71628@fledge.watson.org> <3c0b01820804170752x68714a6cj10919e6cb7ffda16@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080417160922.X77343>