From: Ingo Molnar <mingo@elte.hu>
To: "Paul E. McKenney" <paulmck@us.ibm.com>
Cc: linux-kernel@vger.kernel.org, Esben Nielsen <simlo@phys.au.dk>
Subject: [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-07
Date: Tue, 22 Mar 2005 12:28:56 +0100 [thread overview]
Message-ID: <20050322112856.GA25129@elte.hu> (raw)
In-Reply-To: <20050322100153.GA23143@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
>
> * Ingo Molnar <mingo@elte.hu> wrote:
>
> > hm, another thing: i think call_rcu() needs to take the read-lock.
> > Right now it assumes that it has the data structure private, but
> > that's only statistically true on PREEMPT_RT: another CPU may have
> > this CPU's RCU control structure in use. So IRQs-off (or preempt-off)
> > is not a guarantee to have the data structure, the read lock has to be
> > taken.
>
> i've reworked the code to use the read-lock to access the per-CPU data
> RCU structures, and it boots with 2 CPUs and PREEMPT_RT now. The
> -40-05 patch can be downloaded from the usual place:
bah, it's leaking dentries at a massive scale. I'm giving up on this
variant for the time being and have gone towards a much simpler variant,
implemented in the -40-07 patch at:
http://redhat.com/~mingo/realtime-preempt/
it's along the lines of Esben's patch, but with the conceptual bug fixed
via the rcu_read_lock_nesting code from Paul's patch.
there's a new CONFIG_PREEMPT_RCU option. (always-enabled on PREEMPT_RT)
It builds & boots fine on my 2-way box, doesnt leak dentries and
networking is up and running.
first question, (ignoring the grace priod problem) is this a correct RCU
implementation? The critical scenario is when a task gets migrated to
another CPU, so that current->rcu_data is that of another CPU's. That is
why ->active_readers is an atomic variable now. [ Note that while
->active_readers may be decreased from another CPU, it's always
increased on the current CPU, so when a preemption-off section
determines that a quiescent state has passed that determination stays
true up until it enables preemption again. This is needed for correct
callback processing. ]
this implementation has the 'long grace periods' problem. Starvation
should only be possible if a system has zero idle time for a long period
of time, and even then it needs the permanent starvation of
involuntarily preempted rcu-read-locked tasks. Is there any way to force
such a situation? (which would turn this into a DoS)
[ in OOM situations we could force quiescent state by walking all tasks
and checking for nonzero ->rcu_read_lock_nesting values and priority
boosting affected tasks (to RT prio 99 or RT prio 1), which they'd
automatically drop when they decrease their rcu_read_lock_nesting
counter to zero. ]
Ingo
next prev parent reply other threads:[~2005-03-22 11:32 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-19 19:16 [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-00 Ingo Molnar
2005-03-20 0:24 ` Lee Revell
2005-03-21 15:42 ` K.R. Foley
2005-03-20 1:33 ` Lee Revell
2005-03-20 1:50 ` K.R. Foley
2005-03-20 4:32 ` Lee Revell
2005-03-20 22:40 ` Paul E. McKenney
2005-03-20 17:45 ` Paul E. McKenney
2005-03-21 8:53 ` Ingo Molnar
2005-03-21 9:01 ` Ingo Molnar
2005-03-21 9:06 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-01 Ingo Molnar
2005-03-21 23:10 ` Magnus Naeslund(t)
2005-03-22 5:40 ` Paul E. McKenney
2005-03-22 8:50 ` Ingo Molnar
2005-03-22 13:56 ` Magnus Naeslund(t)
2005-03-23 5:46 ` Paul E. McKenney
2005-03-22 5:43 ` Paul E. McKenney
2005-03-22 7:24 ` Ingo Molnar
2005-03-22 9:23 ` Ingo Molnar
2005-03-22 9:32 ` Ingo Molnar
2005-03-22 10:01 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-05 Ingo Molnar
2005-03-22 11:28 ` Ingo Molnar [this message]
2005-03-22 15:06 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-07 K.R. Foley
2005-03-22 18:05 ` Magnus Naeslund(t)
2005-03-23 6:16 ` Paul E. McKenney
2005-03-23 6:33 ` Ingo Molnar
2005-03-23 6:37 ` Ingo Molnar
2005-03-24 6:06 ` Paul E. McKenney
2005-03-23 7:16 ` Ingo Molnar
2005-03-23 7:54 ` Steven Rostedt
2005-03-23 7:58 ` Ingo Molnar
2005-03-23 8:29 ` Peter Zijlstra
2005-03-23 9:03 ` Ingo Molnar
2005-03-24 6:45 ` Paul E. McKenney
2005-03-23 21:46 ` Ingo Molnar
2005-03-24 6:59 ` Paul E. McKenney
2005-03-24 6:38 ` Paul E. McKenney
2005-03-23 9:38 ` Herbert Xu
2005-03-23 9:49 ` Herbert Xu
2005-03-24 6:52 ` Paul E. McKenney
2005-03-24 5:28 ` Paul E. McKenney
2005-03-24 5:34 ` Ingo Molnar
2005-03-24 7:46 ` Paul E. McKenney
2005-03-24 8:31 ` Steven Rostedt
2005-03-24 8:47 ` Steven Rostedt
2005-03-24 10:45 ` Ingo Molnar
2005-03-24 11:39 ` Ingo Molnar
2005-03-24 14:33 ` Steven Rostedt
2005-03-24 17:51 ` Ingo Molnar
2005-03-24 18:17 ` Ingo Molnar
2005-03-24 23:05 ` Esben Nielsen
2005-03-25 6:19 ` Ingo Molnar
2005-03-26 16:31 ` Steven Rostedt
2005-03-26 19:11 ` Ingo Molnar
2005-03-26 16:04 ` Steven Rostedt
2005-03-30 6:31 ` Steven Rostedt
2005-03-30 6:50 ` Ingo Molnar
2005-03-30 16:46 ` Steven Rostedt
2005-03-30 19:44 ` Esben Nielsen
2005-03-30 19:56 ` Steven Rostedt
2005-03-30 21:39 ` Steven Rostedt
2005-03-30 21:43 ` Steven Rostedt
2005-03-31 11:03 ` Ingo Molnar
2005-03-31 12:03 ` Esben Nielsen
2005-03-31 12:14 ` Steven Rostedt
2005-03-31 13:33 ` Ingo Molnar
2005-03-31 12:22 ` Steven Rostedt
2005-03-31 12:36 ` Steven Rostedt
2005-03-31 12:58 ` Steven Rostedt
2005-03-31 13:28 ` Ingo Molnar
2005-03-31 12:49 ` Steven Rostedt
2005-03-31 14:10 ` Ingo Molnar
2005-03-31 17:41 ` Steven Rostedt
2005-03-31 17:49 ` Ingo Molnar
2005-03-31 18:17 ` Gene Heskett
2005-03-31 21:00 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-07 (update) Gene Heskett
2005-03-31 20:22 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-07 Steven Rostedt
2005-04-01 0:59 ` Steven Rostedt
2005-04-01 4:43 ` Ingo Molnar
2005-04-01 5:13 ` Steven Rostedt
2005-04-01 5:19 ` Ingo Molnar
2005-04-01 12:27 ` Steven Rostedt
2005-04-07 21:21 ` Steven Rostedt
2005-04-10 10:31 ` Ingo Molnar
2005-04-10 15:06 ` Steven Rostedt
2005-03-24 10:42 ` Ingo Molnar
2005-03-23 9:40 ` Herbert Xu
2005-03-23 9:48 ` Herbert Xu
2005-03-23 5:23 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-05 Paul E. McKenney
2005-03-23 4:48 ` [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.41-01 Paul E. McKenney
2005-03-23 6:21 ` Ingo Molnar
2005-03-22 8:59 ` 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=20050322112856.GA25129@elte.hu \
--to=mingo@elte.hu \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@us.ibm.com \
--cc=simlo@phys.au.dk \
/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