diff options
author | Con Kolivas <kernel@kolivas.org> | 2006-03-31 02:31:29 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-31 12:18:59 -0800 |
commit | d425b274ba83ba4e7746a40446ec0ba3267de51f (patch) | |
tree | 73d3342be7ba8ef8d18a8c3cc9fea6e026e2bffa /kernel | |
parent | 7c4bb1f9b3788309e1159961c606ba0bdf7ed382 (diff) | |
download | lwn-d425b274ba83ba4e7746a40446ec0ba3267de51f.tar.gz lwn-d425b274ba83ba4e7746a40446ec0ba3267de51f.zip |
[PATCH] sched: activate SCHED BATCH expired
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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 73bb4d9ef989..dd153d6f8a04 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -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++; } @@ -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) |