Re: Question about group scheduler cpu shares

From: Gaurav Poothia
Date: Thu Jul 21 2016 - 23:24:16 EST


Thanks Mike.
So if I understand you right - tasks on interior nodes get their
weight from task's nice level and not from some cpu.share setting.
Two followups:
1.What is the function that translates from various nice levels to
weight i.e. nice(0) == 1024 how to translate for other levels
2.How does that work when an interior node has multiple tasks? So if I
added tasks E and F with difference nice levels to Group 1 task list
how would the math work?

Appreciate the help -thanks!

On Thu, Jul 21, 2016 at 7:51 PM, Mike Galbraith
<umgwanakikbuti@xxxxxxxxx> wrote:
> On Thu, 2016-07-21 at 18:18 -0700, Gaurav Poothia wrote:
>
>> > ROOT
>> > >
>> > + -Group1(3072)
>> > > |
>> > > +- A(2048)
>> > > |
>> > > +- B(1024)
>> > >
>> > +- Group2(2048)
>> > |
>> > +-C(1024)
>> > |
>> > +-D(1024)
>> >
>
>> > Say I add a task E to Group1's task list (note that is an interior aka
>> > non-leaf node)
>> > How does the CPU split change between A, B and E.
>> > AFAICT there is no cgroup cpu subsystem knob to weight tasks on an
>> > interior node against the tasks in that node's children
>
> A, B and E are all entities with a weight, so just plug E into your
> graph. Its weight is determined by nice level, which is what cgroups
> should have done instead of inventing shares IMHO. 1024 == nice(0).
>
> -Mike



--
Kiva.org - Loans That Change Lives