public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>,
	ksummit-2008-discuss@lists.linux-foundation.org,
	Linux Kernel list <linux-kernel@vger.kernel.org>,
	Jeremy Kerr <jk@ozlabs.org>
Subject: Re: [Ksummit-2008-discuss] Delayed interrupt work, thread pools
Date: Thu, 03 Jul 2008 06:57:16 +1000	[thread overview]
Message-ID: <1215032236.21182.52.camel@pasglop> (raw)
In-Reply-To: <87zlp0sg4l.fsf@basil.nowhere.org>

On Wed, 2008-07-02 at 13:02 +0200, Andi Kleen wrote:
> Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:
> 
> >> how much of this would be obsoleted if we had irqthreads ?
> >
> > I'm not sure irqthreads is what I want...
> >
> > First, can they call handle_mm_fault ? (ie, I'm not sure precisely what
> > kind of context those operate into).
> 
> Interrupt threads would be kernel threads and kernel threads
> run with lazy (= random) mm and calling handle_mm_fault on that
> wouldn't be very useful because you would affect a random mm.

That isn't a big issue. handle_mm_fault() takes the mm as an argument
(like when called from get_user_pages()) and if there's anything fishy I
can always attach/detach the mm to the thread. Been done before, works
fine.

> Ok you could force them to run with a specific MM, but that would
> cause first live time issues with the original MM (how could you
> ever free it?) and also increase the interrupt handling latency
> because the interrupt would be a nearly full blown VM context
> switch then.

handle_mm_fault() shouldn't need an mm context switch. I can just
refcount while I have a ref. to the mm in my queue. I can deal with
lifetime, that isn't a big issue.

> I also think interrupts threads are a bad idea in many cases because
> their whole "advantage" over classical interrupts is that they can
> block. Now blocking can be usually take a unbounded potentially long
> time.

Yes, that's what I explain in the rest of my mail. That plus the fact
that I need to context switch the SPU to other contexts while we block.

 .../...

I agree with most of your points, which is why I believe interrupt
threads aren't a good option for me.

Interrupts for "normal" events will be handled in a short/bounded time.

Interrupts coming from SPU page faults will be deferred to a thread from
a pool (which can need more time if none is available, ie work queue ->
allocate more, or just wait on one to free up, the stategy here is to be
defined).

It's not a problem to have them delayed. I can context switch a faulting
SPU to some other task and switch it back later when the fault is
serviced. Anything time critical shouldn't operate on fault-able memory
in the first place :-)

So I need at most one kernel thread per SPU context for handling the
faults. The idea of the thread pools is that most of the time, I don't
take faults, and thus I don't nearly need as many threads in practice.
Thus having a pool that can dynamically grow or shrink based on pressure
would make sense.

Ben.



  parent reply	other threads:[~2008-07-02 20:57 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-01 12:45 Delayed interrupt work, thread pools Benjamin Herrenschmidt
2008-07-01 12:53 ` [Ksummit-2008-discuss] " Matthew Wilcox
2008-07-01 13:38   ` Benjamin Herrenschmidt
2008-07-01 13:02 ` Robin Holt
2008-07-02  1:39   ` Dean Nelson
2008-07-02  2:38     ` Benjamin Herrenschmidt
2008-07-02  2:47       ` Dave Chinner
2008-07-02 14:27       ` [Ksummit-2008-discuss] " Hugh Dickins
2008-07-02  4:22 ` Arjan van de Ven
2008-07-02  5:44   ` Benjamin Herrenschmidt
2008-07-02 11:02     ` Andi Kleen
2008-07-02 11:19       ` Leon Woestenberg
2008-07-02 11:24         ` Andi Kleen
2008-07-02 20:57       ` Benjamin Herrenschmidt [this message]
2008-07-02 14:11     ` James Bottomley
2008-07-02 20:00       ` Steven Rostedt
2008-07-02 20:22         ` James Bottomley
2008-07-02 20:28           ` Arjan van de Ven
2008-07-02 20:40           ` Steven Rostedt
2008-07-02 21:02         ` Benjamin Herrenschmidt
2008-07-02 21:00       ` Benjamin Herrenschmidt
2008-07-03 10:12         ` Eric W. Biederman
2008-07-03 10:31           ` Benjamin Herrenschmidt
2008-07-07 14:09       ` Chris Mason
2008-07-07 23:03         ` Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1215032236.21182.52.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=andi@firstfloor.org \
    --cc=arjan@linux.intel.com \
    --cc=jk@ozlabs.org \
    --cc=ksummit-2008-discuss@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox