Re: [PATCH 2/7] sched: Update rq clock on nohz CPU before settingfair group shares

From: Ingo Molnar
Date: Wed Apr 10 2013 - 07:06:58 EST



* Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Wed, 2013-04-10 at 12:06 +0200, Ingo Molnar wrote:
> > * Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >
> > > I think Mike once tried something along the lines of keeping a per rq state that
> > > got cleared at the end of schedule() but that doesn't catch things like the
> > > migrate handlers I think.
> >
> > We'd need a rq->clock.valid debug flag, which is set by a sched-clock update, and
> > cleared by the end of all scheduler operations, not just schedule().
> >
> > Then sched_clock() could have a pretty efficient assert in it. Are there bugs that
> > such an approach would not catch?
>
> It requires manual iteration of all scheduler operations which is prone
> to 'accidents'.

There's just a handful of high level entry points, right? schedule(), wakeup,
scheduler tick, maybe notifiers - anything else? Documenting/listing those would
be nice anyway, near the top of kernel/sched/core.c or so.

The other approach would be to periodically clear the flag from the timer tick.
That would catch invalid rq->clock use probabilistically.

> I'd clear at the beginning, but that's more or less the same thing.
>
> We have the .sched.text section but I'm not sure we've been consistent enough
> with that to be useful. But otherwise we'd be able to clear on section
> entry/exit or so.

Hm, I'm not sure that can be made to work sanely.

Thanks,

Ingo
--
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/