Skip to content

Commit

Permalink
[PATCH] sched: activate SCHED BATCH expired
Browse files Browse the repository at this point in the history
To increase the strength of SCHED_BATCH as a scheduling hint we can
activate batch tasks on the expired array since by definition they are
latency insensitive tasks.

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 7c4bb1f commit d425b27
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
1 change: 1 addition & 0 deletions include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,7 @@ struct signal_struct {
#define MAX_PRIO (MAX_RT_PRIO + 40)

#define rt_task(p) (unlikely((p)->prio < MAX_RT_PRIO))
#define batch_task(p) (unlikely((p)->policy == SCHED_BATCH))

/*
* Some day this will be a full-fledged user tracking system..
Expand Down
10 changes: 7 additions & 3 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -667,9 +667,13 @@ static int effective_prio(task_t *p)
/*
* __activate_task - move a task to the runqueue.
*/
static inline void __activate_task(task_t *p, runqueue_t *rq)
static void __activate_task(task_t *p, runqueue_t *rq)
{
enqueue_task(p, rq->active);
prio_array_t *target = rq->active;

if (batch_task(p))
target = rq->expired;
enqueue_task(p, target);
rq->nr_running++;
}

Expand All @@ -688,7 +692,7 @@ static int recalc_task_prio(task_t *p, unsigned long long now)
unsigned long long __sleep_time = now - p->timestamp;
unsigned long sleep_time;

if (unlikely(p->policy == SCHED_BATCH))
if (batch_task(p))
sleep_time = 0;
else {
if (__sleep_time > NS_MAX_SLEEP_AVG)
Expand Down

0 comments on commit d425b27

Please sign in to comment.