Re: [PATCH] sched: SCHED_RESET_ON_FORK to recalculate load weights

From: Linus Walleij
Date: Sun Oct 10 2010 - 19:06:44 EST


2010/10/9 Peter Zijlstra <peterz@xxxxxxxxxxxxx>:

> On Sat, 2010-10-09 at 10:16 +0200, Linus Walleij wrote:
>>
>> So we always need to call set_load_weight(), not just if the
>> niceval was changed, because the scheduler gives
>> SCHED_RR/SCHED_FIFO processes very high weights.
>
> SCHED_RR/FIFO never uses that weight, we should remove all that cruft..

Hm I wonder if that is an ACK or "please throughly rewrite the
scheduler" request ;-)

Anyway I also saw you have started to get rid of RT weights it in
commit e51fd5e2, so in set_load_weight():

if (task_has_rt_policy(p)) {
p->se.load.weight = prio_to_weight[0] * 2;
p->se.load.inv_weight = prio_to_wmult[0] >> 1;
return;
}

is now replaced by this:

if (task_has_rt_policy(p)) {
p->se.load.weight = 0;
p->se.load.inv_weight = WMULT_CONST;
return;
}

I backported that commit onto 2.6.34 (bah, just patch -p1)
and tested. The problem persists, but mutates:

Whereas before this commit the problem was that processes came
back with enormous weights after forking of an RT process flagged
with SCHED_RESET_ON_FORK, the problem is now the reverse:
the process comes back with load weight zero making the forked
process totally numb (when it has enormous weights it would atlest
respond), so this patch is still needed to bring the weight back in
balance AFAICT.

Yours,
Linus Walleij
--
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/