Re: RFC: documentation of the autogroup feature

From: Michael Kerrisk (man-pages)
Date: Wed Nov 23 2016 - 11:05:13 EST

Hi Mike,

On 11/23/2016 04:33 PM, Mike Galbraith wrote:
> 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.

Okay -- I'll see if I can come up with some wording there.

>>>> │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.

Could you say a little more please. What Kernel-user-space
APIs/system calls/etc. cause this to happen?

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

Well, you suggested above

Perhaps mention that moving a task back to the root task
group will result in the autogroup again taking effect.

So, that inevitable would lead me and the reader of the man page
to ask: what's the root task group?

> Autogroup is for
> those who don't want to have to care (which is also why it should have
> never grown nice knob).

Yes, that I understand that much :-).



Michael Kerrisk
Linux man-pages maintainer;
Linux/UNIX System Programming Training: