Re: [PATCH tip/core/rcu 11/17] rcu: Bind grace-period kthreads to non-NO_HZ_FULL CPUs

From: Paul E. McKenney
Date: Fri Jul 11 2014 - 14:29:32 EST


On Fri, Jul 11, 2014 at 01:10:41PM -0500, Christoph Lameter wrote:
> On Tue, 8 Jul 2014, Frederic Weisbecker wrote:
>
> > > I was figuring that a fair number of the kthreads might eventually
> > > be using this, not just for the grace-period kthreads.
> >
> > Ok makes sense. But can we just rename the cpumask to housekeeping_mask?
>
> That would imply that all no-nohz processors are housekeeping? So all
> processors with a tick are housekeeping?
>
> Could we make that set configurable? Ideally I'd like to have the ability
> restrict the housekeeping to one processor.

We have a housekeeping_affine() in -rcu that currently assumes that all
no-nohz CPUs are housekeeping CPUs. It would not be hard to add the
ability to restrict the housekeeping CPUs further. Coming to agreement
on exactly how to go about doing it might be hard, but read on! ;-)

Here are some possibilities that come to mind:

1. Have a housekeeping= boot parameter that takes the list of
housekeeping CPUs. You have full control: You break it,
you get to keep the pieces.

2. As above, but eliminate any nohz_full= CPUs from the
housekeeping= list (probably with a splat).

This of course raises the question about what to do if the
resulting housekeeping set is empty:

a. Complain and let housekeeping tasks run anywhere.

b. Complain and restrict housekeeping tasks to !nohz CPUs.

3. Have a housekeeping= boot parameter that specifies the number
of housekeeping CPUs, which are taken from the !nohz_full
list in order. If too many are specified, complain and either:

a. Restrict to !nohz_full CPUs.

b. Use the specified number of nohz_full CPUs as
housekeeping CPUs.

Thoughts?

Thanx, Paul

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