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