public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Bill Huey (hui) <billh@gnuppy.monkey.org>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Ingo Molnar <mingo@elte.hu>,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	John Stultz <johnstul@us.ibm.com>,
	"Paul E. McKenney" <paulmck@us.ibm.com>,
	Dipankar Sarma <dipankar@in.ibm.com>,
	Arjan van de Ven <arjan@infradead.org>,
	"Bill Huey (hui)" <billh@gnuppy.monkey.org>
Subject: Re: [PATCH] move put_task_struct() reaping into a thread [Re: 2.6.18-rt1]
Date: Wed, 27 Sep 2006 02:09:39 -0700	[thread overview]
Message-ID: <20060927090939.GA17136@gnuppy.monkey.org> (raw)
In-Reply-To: <m1d59hpy1j.fsf@ebiederm.dsl.xmission.com>

On Wed, Sep 27, 2006 at 01:29:44AM -0600, Eric W. Biederman wrote:
> Bill Huey (hui) <billh@gnuppy.monkey.org> writes:
> > One of the main claims about the -rt patch is that the kernel is basically
> > conversion of the current locking semantics in the kernel. What you mentioned
> > above would deviate from that and and clutter non-preemptive kernel maintenance.
> > If you're suggesting a more general change to that function, then it wouldn't
> > violate that.
> 
> Yes I am.  The motivator would be the RT work but I don't see a reason why
> the it couldn't be put in the mainline kernel.  If not at least we need
> the big fat comment in the mainline kernel that says put_task_struct must
> be safe to call with interrupts disabled.
> 
> The way the code is structured now it deviates from the mainline kernel in
> more than just changing locking behavior.  Which is what brought me into
> this conversation in the first place.  So removing that point of discord
> would be good.

Yes, there are few places. It was primarily to handle the reaping during the
finishing parts of a fork. All in all, it's not at all a critical path.

> If you have fixed rwsem_down_failed_common() like it sounds like you have.
> That would be a nice patch to for the mainline kernel.

The problem only exists under -rt in that scheduling path. I can't comment if
it's desired for mainline or not.
 
> > There are a couple of issues here.
> >
> > (1) The RCU callback isn't used in this case to back other RCU read critical
> > sections. It's just used as a generic callback mechanism in this case. Some
> > consider it a hack.
> >
> > (2) RCU isn't necessarily bad for -rt since Paul McKenney and folks are
> > working on making it preempt friendly. Any talk of removing the use RCU in -rt
> > is premature and probably unlikely because of this work. There are many options
> > here. RCU very useful for scalability so seeing it go away in -rt would be
> > generally a bad thing IMO.
> 
> Agreed.  However until the issues are resolved with call_rcu it appears quite
> silly to increase the usage of it in the RT tree.  
> 
> About the rcu removal discussion I heard it was more the possibility was
> suggested because the downside was significant, and normal locks were
> more deterministic.  The emphasis was that call_rcu could be a problem and
> that something needs to happen to fix that. 

In a general purpose system as complicated as Linux, "locks being more
deterministic" is kind of ridiculous. Tons of stuff can happen that you
can't control. The RCU thing that you heard was probably just ideas being
thrown around and there are many options that haven't been explored yet.
The actual scenario is more complicated than what you might have initially
heard.

> Agreed.  The normal rcu path is quite nice.  It is the call_rcu part used
> to implement delayed freeing where things get ugly.

The RCU callback stuff runs as a thread. The key part of a preemptible system
that can make guarantees is the ability to response to a higher priority thread
in a deterministic amount of time. That's the only real guarantee that can be
made in that system. Because of it running in a thread, callbacks in RCU don't
effect the preemptibility of the system at all.

Any kernel thread taking the risk of acquiring a lock cannot be deterministic
in any reasonable sense. Any claims of a guarantee is pretty much a lie since
the system is too complicated to analysize for determinism in any meaningful
way using the analysis techniques out there. The kernel is just too complicated.

In contrast, specialize RT apps with few threads is another scenario that's much
more controllable.

> Yes the current logic is simple and requires no changes elsewhere.
> It is always nice when you can do that.  But in this case it adds unnecessary
> overhead, and indeterminism.   From what little I understand of RCU both
> of those are bad things.  Thus my gut feeling that the approach is a hack
> and should get fixed properly.

I agree. It's a hack and it should go away. You're the fourth person to mention
something about this, but it's up to Ingo.

> Anyway short of submitting a patch I think I have said enough.
> Thank you for the explanation.

No problem, any time :)

bill


  parent reply	other threads:[~2006-09-27  9:10 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-20 14:19 2.6.18-rt1 Ingo Molnar
2006-09-20 16:50 ` 2.6.18-rt1 Gene Heskett
2006-09-20 16:58   ` 2.6.18-rt1 Ingo Molnar
2006-09-20 17:33     ` 2.6.18-rt1 Gene Heskett
2006-09-20 18:34     ` 2.6.18-rt1 Gene Heskett
2006-09-20 17:00   ` 2.6.18-rt1 Daniel Walker
2006-09-20 17:38     ` 2.6.18-rt1 Paul E. McKenney
2006-09-20 17:41       ` 2.6.18-rt1 Daniel Walker
2006-09-20 18:23         ` 2.6.18-rt1 Gene Heskett
2006-09-20 18:25         ` 2.6.18-rt1 Paul E. McKenney
2006-09-20 18:34           ` 2.6.18-rt1 Daniel Walker
2006-09-20 20:06             ` 2.6.18-rt1 Paul E. McKenney
2006-09-20 21:38               ` 2.6.18-rt1 Gene Heskett
2006-09-20 20:17             ` 2.6.18-rt1 Gene Heskett
2006-09-20 18:36           ` 2.6.18-rt1 Gene Heskett
2006-09-20 18:47             ` 2.6.18-rt1 Thomas Gleixner
2006-09-20 19:20               ` 2.6.18-rt1 Thomas Gleixner
2006-09-20 19:46             ` 2.6.18-rt1 Ingo Molnar
2006-09-20 20:19               ` 2.6.18-rt1 Daniel Walker
2006-09-20 20:14                 ` 2.6.18-rt1 Ingo Molnar
2006-09-20 20:31                   ` 2.6.18-rt1 Daniel Walker
2006-09-21 19:02                     ` 2.6.18-rt1 Ingo Molnar
2006-09-21 19:18                       ` 2.6.18-rt1 Daniel Walker
2006-09-22 14:42                       ` 2.6.18-rt1 Daniel Walker
2006-09-27  8:36                         ` 2.6.18-rt1 Ingo Molnar
2006-09-21  8:04               ` 2.6.18-rt1 Deepak Saxena
2006-09-21  8:04                 ` 2.6.18-rt1 Ingo Molnar
2006-09-21  8:24                   ` 2.6.18-rt1 Deepak Saxena
2006-09-22  2:19               ` 2.6.18-rt1 john cooper
2006-09-22  6:36                 ` 2.6.18-rt1 Lennert Buytenhek
2006-09-22 11:56                   ` 2.6.18-rt1 Ingo Molnar
2006-09-27 13:10                     ` 2.6.18-rt4 john cooper
2006-09-27 13:09                       ` 2.6.18-rt4 Ingo Molnar
2006-09-20 18:56 ` 2.6.18-rt1 K.R. Foley
2006-09-20 19:49   ` 2.6.18-rt1 Ingo Molnar
2006-09-20 20:33     ` 2.6.18-rt1 K.R. Foley
2006-09-20 20:41       ` 2.6.18-rt1 Thomas Gleixner
2006-09-20 20:50         ` 2.6.18-rt1 K.R. Foley
2006-09-21 19:16           ` 2.6.18-rt1 john stultz
2006-09-22  2:18             ` 2.6.18-rt1 K.R. Foley
2006-09-22 11:58             ` 2.6.18-rt1 Ingo Molnar
2006-09-28  0:42               ` 2.6.18-rt1 john stultz
2006-09-28 22:48                 ` 2.6.18-rt1 john stultz
2006-09-29  2:09                   ` 2.6.18-rt1 K.R. Foley
2006-09-29 12:24                   ` 2.6.18-rt1 Ingo Molnar
2006-09-29 12:40                   ` 2.6.18-rt1 Ingo Molnar
2006-09-20 19:58   ` 2.6.18-rt1 Thomas Gleixner
2006-09-20 20:34     ` 2.6.18-rt1 K.R. Foley
2006-09-20 19:38 ` 2.6.18-rt1 Mark Knecht
2006-09-20 20:27   ` 2.6.18-rt1 Mark Knecht
2006-09-22 14:14   ` 2.6.18-rt1 Lee Revell
2006-09-20 20:54 ` 2.6.18-rt1 Michal Piotrowski
2006-09-20 22:07 ` 2.6.18-rt1 Michal Piotrowski
2006-09-20 22:26 ` 2.6.18-rt1 Michal Piotrowski
2006-09-21  6:56 ` [PATCH] move put_task_struct() reaping into a thread [Re: 2.6.18-rt1] Bill Huey
2006-09-21  6:54   ` Ingo Molnar
2006-09-21  7:18     ` Bill Huey
2006-09-21  7:16       ` Ingo Molnar
2006-09-21  7:32         ` Bill Huey
2006-09-21  7:29           ` Ingo Molnar
2006-09-21  7:48             ` Bill Huey
2006-09-21  7:56               ` Ingo Molnar
2006-09-21  8:13                 ` Bill Huey
2006-09-21 12:23                   ` Esben Nielsen
2006-09-21 12:56                     ` Ingo Molnar
2006-09-21  7:27       ` Bill Huey
2006-09-21  7:22         ` Ingo Molnar
2006-09-21  7:35           ` Bill Huey
2006-09-21  7:31             ` Ingo Molnar
2006-09-21  7:52               ` Bill Huey
2006-09-27  2:55   ` Eric W. Biederman
2006-09-27  5:08     ` Bill Huey
2006-09-27  6:02       ` Eric W. Biederman
2006-09-27  6:34         ` Bill Huey
2006-09-27  7:29           ` Eric W. Biederman
2006-09-27  9:01             ` Ingo Molnar
2006-09-27 13:59               ` Eric W. Biederman
2006-09-27 14:06                 ` Ingo Molnar
2006-09-27 16:18                   ` Paul E. McKenney
2006-09-27  9:08             ` Ingo Molnar
2006-09-27  9:09             ` Bill Huey [this message]
2006-09-27  9:05               ` Ingo Molnar
2006-09-27 20:28         ` Esben Nielsen
2006-09-27  8:57       ` Ingo Molnar
2006-09-27  9:14         ` Bill Huey
2006-09-27  9:15           ` Ingo Molnar
2006-09-25  9:53 ` 2.6.18-rt1 Florian Schmidt
2006-09-26  7:57   ` 2.6.18-rt1 Florian Schmidt
2006-09-25 16:12 ` 2.6.18-rt1 Mike Kravetz
2006-09-27  8:34   ` 2.6.18-rt1 Ingo Molnar
2006-09-30 18:06 ` 2.6.18-rt1 Lee Revell
2006-09-30 18:18   ` 2.6.18-rt1 Dipankar Sarma
2006-09-30 18:25     ` 2.6.18-rt1 Lee Revell
2006-10-13 21:18     ` 2.6.18-rt1 Karsten Wiese
2006-10-13 21:20       ` 2.6.18-rt1 Lee Revell
2006-10-13 21:24       ` 2.6.18-rt1 Dipankar Sarma
2006-10-13 22:12         ` 2.6.18-rt1 Lee Revell
2006-10-13 22:16           ` 2.6.18-rt1 Dipankar Sarma
2006-10-17 14:46             ` 2.6.18-rt1 Lee Revell
2006-10-18  8:34               ` 2.6.18-rt1 Ingo Molnar
2006-10-18  7:12         ` 2.6.18-rt1 Ingo Molnar

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=20060927090939.GA17136@gnuppy.monkey.org \
    --to=billh@gnuppy.monkey.org \
    --cc=arjan@infradead.org \
    --cc=dipankar@in.ibm.com \
    --cc=ebiederm@xmission.com \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulmck@us.ibm.com \
    --cc=tglx@linutronix.de \
    /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