Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jan 2013 12:12:16 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        Barney Cordoba <barney_cordoba@yahoo.com>, Luigi Rizzo <rizzo@iet.unipi.it>, freebsd-net@freebsd.org
Subject:   Re: two problems in dev/e1000/if_lem.c::lem_handle_rxtx()
Message-ID:  <201301221212.16628.jhb@freebsd.org>
In-Reply-To: <CAJ-Vmomd1ivZjWdiC8_O1qwim2dctq1o%2By5=UH2eivU4NdCOAQ@mail.gmail.com>
References:  <1358610450.75691.YahooMailClassic@web121604.mail.ne1.yahoo.com> <201301191114.29959.jhb@freebsd.org> <CAJ-Vmomd1ivZjWdiC8_O1qwim2dctq1o%2By5=UH2eivU4NdCOAQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday, January 19, 2013 8:19:19 pm Adrian Chadd wrote:
> On 19 January 2013 08:14, John Baldwin <jhb@freebsd.org> wrote:
> 
> > However, I did describe an alternate setup where you can fix this.  Part of
> > the key is to get various NICs to share a single logical queue of tasks.  You
> > could simulate this now by having all the deferred tasks share a single
> > taskqueue with a pool of tasks, but that will still not fully cooperate with
> > ithreads.  To do that you have to get the interrupt handlers themselves into
> > the shared taskqueue.  Some changes I have in a p4 branch allow you to do that
> > by letting interrupt handlers reschedule themselves (avoiding the need for a
> > separate task and preventing the task from running concurrently with the
> > interrupt handler) and providing some (but not yet all) of the framework to
> > allow multiple devices to share a single work queue backed by a shared pool of
> > threads.
> 
> How would that work when I want to pin devices to specific cores?

Note that the setup allows you to bind things however you want.  By default it
uses the current model (each IRQ uses a dedicated queue with a single thread).
The idea is to provide the flexbility so that you can glue things together in
whatever way makes the most sense.  In a router that tends to get into livelock
using a shared queue may make more sense.  However, you are not forced to use that
for other workloads where it does not.

-- 
John Baldwin



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