RE: Regression seen for patch "sched:dont decrease idle sleep avg"

Chen, Kenneth W
2006-05-16T01:22:28Z

Con Kolivas wrote on Monday, May 15, 2006 4:45 PM
> On Tuesday 16 May 2006 05:01, Chen, Kenneth W wrote:
> > I don't think the if and the else block is doing the same thing. In the if
> > block, the p->sleep_avg is unconditionally boosted to ceiling for all
> > tasks, though it will not reduce sleep_avg for tasks that already exceed
> > the ceiling. Bumping up sleep_avg will then translate into priority boost
> > of MAX_BONUS-1, which potentially can be too high.
>
> Yes it's only designed to detect something that has been asleep for an
> arbitrary long time and "categorised as idle"; it is not supposed to be a
> priority stepping stone for everything, in this case at MAX_BONUS-1. Mike
> proposed doing this instead, but it was never my intent. Your comment is not
> quite correct as it just happens to be MAX_BONUS-1 at nice 0, and not any
> other nice value.

Huh??

sleep_avg is set at constant:
p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG - DEF_TIMESLICE);

The bonus calculation is:

#define CURRENT_BONUS(p) \
(NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / MAX_SLEEP_AVG)

bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;

None of the calculation that I see uses nice value. Did I miss something?

- Ken