Skip to content

Commit

Permalink
[PATCH] sched: make task_noninteractive use sleep_type
Browse files Browse the repository at this point in the history
Alterations to the pipe code in the kernel made it possible for relative
starvation to occur with tasks that slept waiting on a pipe getting unfair
priority bonuses even if they were otherwise fully cpu bound so the
TASK_NONINTERACTIVE flag was introduced which prevented any change to
sleep_avg while sleeping waiting on a pipe.  This change also leads to the
converse though, preventing any priority boost from occurring in truly
interactive tasks that wait on pipes.

Convert the TASK_NONINTERACTIVE flag to set sleep_type to SLEEP_NONINTERACTIVE
which will allow a linear bonus to priority based on sleep time thus allowing
interactive tasks to get high priority if they sleep enough.

Signed-off-by: Con Kolivas <kernel@kolivas.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Con Kolivas authored and Linus Torvalds committed Mar 31, 2006
1 parent 3dee386 commit e7c38cb
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -1273,18 +1273,18 @@ static int try_to_wake_up(task_t *p, unsigned int state, int sync)
* sleep_avg beyond just interactive state.
*/
p->sleep_type = SLEEP_NONINTERACTIVE;
}
} else

/*
* Tasks that have marked their sleep as noninteractive get
* woken up without updating their sleep average. (i.e. their
* sleep is handled in a priority-neutral manner, no priority
* boost and no penalty.)
* woken up with their sleep average not weighted in an
* interactive way.
*/
if (old_state & TASK_NONINTERACTIVE)
__activate_task(p, rq);
else
activate_task(p, rq, cpu == this_cpu);
if (old_state & TASK_NONINTERACTIVE)
p->sleep_type = SLEEP_NONINTERACTIVE;


activate_task(p, rq, cpu == this_cpu);
/*
* Sync wakeups (i.e. those types of wakeups where the waker
* has indicated that it will leave the CPU in short order)
Expand Down

0 comments on commit e7c38cb

Please sign in to comment.