Re: [RFC PATCH 13/15] sched: Protect nohz task cpu affinity

From: Steven Rostedt
Date: Mon Dec 20 2010 - 12:05:38 EST


On Mon, 2010-12-20 at 17:28 +0100, Peter Zijlstra wrote:
> On Mon, 2010-12-20 at 16:24 +0100, Frederic Weisbecker wrote:
> > Don't allow to change a nohz task cpu affinity as we want them
> > to be bound to a single CPU and we want this affinity not to
> > change.
> >
> > Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> > Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> > Cc: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
> > Cc: Ingo Molnar <mingo@xxxxxxx>
> > Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
> > Cc: Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> > Cc: Anton Blanchard <anton@xxxxxxxxxxx>
> > Cc: Tim Pepper <lnxninja@xxxxxxxxxxxxxxxxxx>
> > ---
> > kernel/sched.c | 7 +++++++
> > 1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/kernel/sched.c b/kernel/sched.c
> > index 4412493..bd0a41f 100644
> > --- a/kernel/sched.c
> > +++ b/kernel/sched.c
> > @@ -5712,6 +5712,13 @@ again:
> > goto out;
> > }
> >
> > + /* Nohz tasks must keep their affinity */
> > + if (test_tsk_thread_flag(p, TIF_NOHZ) &&
> > + !cpumask_equal(&p->cpus_allowed, new_mask)) {
> > + ret = -EBUSY;
> > + goto out;
> > + }
> > +
> > if (p->sched_class->set_cpus_allowed)
> > p->sched_class->set_cpus_allowed(p, new_mask);
> > else {
>
> NAK, this is really way too restrictive.

Agreed, the better solution is to disable the nohz from the task. If the
use just changed its affinity (or something else did), disable the nohz.
Maybe you can add a printk or warning, but I'm not sure about that
either.

-- Steve



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