Messages in this thread Patch in this message | | | Date | Sun, 15 Apr 2007 21:37:47 +0200 | From | Ingo Molnar <> | Subject | Re: [Announce] [patch] Modular Scheduler Core and Completely Fair Scheduler [CFS] |
| |
* Ingo Molnar <mingo@elte.hu> wrote:
> so Linus was right: this was caused by scheduler starvation. I can see > one immediate problem already: the 'nice offset' is not divided by > nr_running as it should. The patch below should fix this but i have > yet to test it accurately, this change might as well render nice > levels unacceptably ineffective under high loads.
erm, rather the updated patch below if you want to use this on a 32-bit system. But ... i think you should wait until i have all this re-tested.
Ingo
--- include/linux/sched.h | 2 +- kernel/sched_fair.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-)
Index: linux/include/linux/sched.h =================================================================== --- linux.orig/include/linux/sched.h +++ linux/include/linux/sched.h @@ -839,7 +839,7 @@ struct task_struct { s64 wait_runtime; u64 exec_runtime, fair_key; - s64 nice_offset, hog_limit; + s32 nice_offset, hog_limit; unsigned long policy; cpumask_t cpus_allowed; Index: linux/kernel/sched_fair.c =================================================================== --- linux.orig/kernel/sched_fair.c +++ linux/kernel/sched_fair.c @@ -31,7 +31,9 @@ static void __enqueue_task_fair(struct r int leftmost = 1; long long key; - key = rq->fair_clock - p->wait_runtime + p->nice_offset; + key = rq->fair_clock - p->wait_runtime; + if (unlikely(p->nice_offset)) + key += p->nice_offset / (rq->nr_running + 1); p->fair_key = key; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |