diff options
| author | Con Kolivas <kernel@kolivas.org> | 2006-03-31 05:31:29 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-31 15:18:59 -0500 |
| commit | d425b274ba83ba4e7746a40446ec0ba3267de51f (patch) | |
| tree | 73d3342be7ba8ef8d18a8c3cc9fea6e026e2bffa /kernel | |
| parent | 7c4bb1f9b3788309e1159961c606ba0bdf7ed382 (diff) | |
[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) | |||
| 667 | /* | 667 | /* |
| 668 | * __activate_task - move a task to the runqueue. | 668 | * __activate_task - move a task to the runqueue. |
| 669 | */ | 669 | */ |
| 670 | static inline void __activate_task(task_t *p, runqueue_t *rq) | 670 | static void __activate_task(task_t *p, runqueue_t *rq) |
| 671 | { | 671 | { |
| 672 | enqueue_task(p, rq->active); | 672 | prio_array_t *target = rq->active; |
| 673 | |||
| 674 | if (batch_task(p)) | ||
| 675 | target = rq->expired; | ||
| 676 | enqueue_task(p, target); | ||
| 673 | rq->nr_running++; | 677 | rq->nr_running++; |
| 674 | } | 678 | } |
| 675 | 679 | ||
| @@ -688,7 +692,7 @@ static int recalc_task_prio(task_t *p, unsigned long long now) | |||
| 688 | unsigned long long __sleep_time = now - p->timestamp; | 692 | unsigned long long __sleep_time = now - p->timestamp; |
| 689 | unsigned long sleep_time; | 693 | unsigned long sleep_time; |
| 690 | 694 | ||
| 691 | if (unlikely(p->policy == SCHED_BATCH)) | 695 | if (batch_task(p)) |
| 692 | sleep_time = 0; | 696 | sleep_time = 0; |
| 693 | else { | 697 | else { |
| 694 | if (__sleep_time > NS_MAX_SLEEP_AVG) | 698 | if (__sleep_time > NS_MAX_SLEEP_AVG) |
