Re: RFC: documentation of the autogroup feature

From: Mike Galbraith
Date: Wed Nov 23 2016 - 10:34:17 EST


On Wed, 2016-11-23 at 14:54 +0100, Michael Kerrisk (man-pages) wrote:
> Hi Mike,
>
> First off, I better say that I'm not at all intimate with the details
> of the scheduler, so bear with me...
>
> On 11/23/2016 12:39 PM, Mike Galbraith wrote:
> > On Tue, 2016-11-22 at 16:59 +0100, Michael Kerrisk (man-pages) wrote:
> >
> > > ┌─────────────────────────────────────────────────────┐
> > > │FIXME │
> > > ├─────────────────────────────────────────────────────┤
> > > │The following is a little vague. Does it need to be │
> > > │made more precise? │
> > > └─────────────────────────────────────────────────────┘
> > > The CFS scheduler employs an algorithm that distributes the CPU
> > > across task groups. As a result of this algorithm, the pro‐
> > > cesses in task groups that contain multiple CPU-intensive pro‐
> > > cesses are in effect disfavored by the scheduler.
> >
> > Mmmm, they're actually equalized (modulo smp fairness goop), but I see
> > what you mean.
>
> I couldn't quite grok that sentence. My problem is resolving "they".
> Do you mean: "the CPU scheduler equalizes the distribution of
> CPU cycles across task groups"?

Sort of. "They" are scheduler entities, runqueue (group) or task. The
scheduler equalizes entity vruntimes.

> > > │FIXME │
> > > ├─────────────────────────────────────────────────────┤
> > > │Is the following correct? Does the statement need to │
> > > │be more precise? (E.g., in precisely which circum‐ │
> > > │stances does the use of cgroups override autogroup?) │
> > > └─────────────────────────────────────────────────────┘
> > > The use of the cgroups(7) CPU controller overrides the effect
> > > of autogrouping.
> >
> > Correct, autogroup defers to cgroups. Perhaps mention that moving a
> > task back to the root task group will result in the autogroup again
> > taking effect.
>
> In what circumstances does a process get moved back to the root
> task group?

Userspace actions, tool or human fingers.


> Actually, can you define for me what the root task group is, and
> why it exists? That may be worth some words in this man page.

I don't think we need group scheduling details, there's plenty of
documentation elsewhere for those who want theory. Autogroup is for
those who don't want to have to care (which is also why it should have
never grown nice knob).

-Mike