From: Frederic Weisbecker <fweisbec@gmail.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [RFC PATCH 2/4] sched: Use traced preempt count operations to toggle PREEMPT_ACTIVE
Date: Wed, 28 Jan 2015 14:59:43 +0100 [thread overview]
Message-ID: <20150128135941.GA29870@lerouge> (raw)
In-Reply-To: <20150127204239.3d3bc2e4@gandalf.local.home>
On Tue, Jan 27, 2015 at 08:42:39PM -0500, Steven Rostedt wrote:
> On Wed, 28 Jan 2015 01:24:10 +0100
> Frederic Weisbecker <fweisbec@gmail.com> wrote:
>
> > d1f74e20b5b064a130cd0743a256c2d3cfe84010 turned PREEMPT_ACTIVE modifiers
> > to use raw untraced preempt count operations. Meanwhile this prevents
> > from debugging and tracing preemption disabled if we pull that
> > responsibility to schedule() callers (see following patches).
> >
> > Is there anything we can do about that?
> >
>
> I'm trying to understand how you solved the recursion issue with
> preempt_schedule()?
I don't solve it, I rather outline the issue to make sure it's still
a problem today. I can keep the non-traced API but we'll loose debuggability
and latency measurement in preempt_schedule(). But I think this was already
the case before my patchset.
>
> Here's what happens:
>
> preempt_schedule()
> preempt_count_add() -> gets traced by function tracer
> function_trace_call()
> preempt_disable_notrace()
> [...]
> preempt_enable_notrace() -> sees NEED_RESCHED set
> preempt_schedule()
> preempt_count_add() -> gets traced
> function_trace_call()
> preempt_disable_notrace()
> preempt_enable_notrace() -> sees NEED_RESCHED set
>
> [etc etc until BOOM!]
>
> Perhaps if you can find a way to clear NEED_RECHED before disabling
> preemption, then it would work. But I don't see that in the patch
> series.
Something like this in function tracing?
prev_resched = need_resched();
do_function_tracing()
preempt_disable()
.....
preempt_enable_no_resched()
if (!prev_resched && need_resched())
preempt_schedule()
Sounds like a good idea. More overhead but maybe more stability.
>
> -- Steve
>
next prev parent reply other threads:[~2015-01-28 21:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-28 0:24 [PATCH 0/4] sched: schedule/preempt optimizations and cleanups Frederic Weisbecker
2015-01-28 0:24 ` [PATCH 1/4] sched: Pull resched loop to __schedule() callers Frederic Weisbecker
2015-02-04 14:36 ` [tip:sched/core] " tip-bot for Frederic Weisbecker
2015-01-28 0:24 ` [RFC PATCH 2/4] sched: Use traced preempt count operations to toggle PREEMPT_ACTIVE Frederic Weisbecker
2015-01-28 1:42 ` Steven Rostedt
2015-01-28 13:59 ` Frederic Weisbecker [this message]
2015-01-28 15:04 ` Steven Rostedt
2015-01-28 15:42 ` Peter Zijlstra
2015-02-02 17:22 ` Frederic Weisbecker
2015-01-28 0:24 ` [PATCH 3/4] sched: Pull preemption disablement to __schedule() caller Frederic Weisbecker
2015-01-28 15:50 ` Peter Zijlstra
2015-02-02 17:53 ` Frederic Weisbecker
2015-02-03 10:53 ` Peter Zijlstra
2015-02-04 17:31 ` Frederic Weisbecker
2015-02-04 17:48 ` Peter Zijlstra
2015-01-28 0:24 ` [RFC PATCH 4/4] sched: Account PREEMPT_ACTIVE context as atomic Frederic Weisbecker
2015-01-28 15:46 ` Peter Zijlstra
2015-02-02 17:29 ` Frederic Weisbecker
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=20150128135941.GA29870@lerouge \
--to=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.