Re: [GIT PULL] RCU fix

From: Linus Torvalds
Date: Tue May 31 2011 - 14:01:21 EST


On Wed, Jun 1, 2011 at 2:44 AM, Paul E. McKenney
<paulmck@xxxxxxxxxxxxxxxxxx> wrote:
>
> The reason for the switch is to allow threads blocked in TREE_PREEMPT_RCU
> and TINY_PREEMPT_RCU RCU read-side critical sections to have their
> priority boosted in order to avoid OOM.  People have made these OOMs
> happen, so this is not longer just a theoretical concern.

Quite frankly, that doesn't make much sense.

First off, the default for priority boosting is off (and you cannot
even select it unless you have RT_MUTEX and PREEMPT_RCU), so why the
heck do we still use the threads even when we don't support the
boosting at all?

Secondly, if a process is in danger of exhausting the RCU resources,
and it is preemptable, why doesn't the rcu_read_unlock() logic just
try to force a reschedule and thus an rcu idle period? Using processes
and process priorities for this seems to be just stupid.

I dunno. After RCU_TINY showed how fragile it was to use kernel
threads for this, and after this subtle issue just re-inforced that
conclusion, I just cannot begin to believe that using a thread was the
right thing to do. It just seems stupid.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/