Messages in this thread Patch in this message |  | | Subject | Re: [PATCH] per-arch load balancing | From | Robert Love <> | Date | 26 Aug 2002 16:27:36 -0400 |
| |
On Mon, 2002-08-26 at 16:11, Christoph Hellwig wrote:
> Can we have a asm/sched.h instead? especially if we might add additional > per-arch scheduler bits. Also I think a asm-generic version is better than > linux/smp_balance.h + the ARCH_HAS_SMP_BALANCE hack. I'd prefer if you > would move the #include ontop ot sched.c, too - includes in the middle of > a file are really messy.
These are all good ideas. Here we go again:
This patch implements per-arch scheduler support with specific support (currently) for per-arch load balancing. We implement an asm-generic/sched.h with default methods. Each architecture needs to define its own asm/sched.h but by default it would just include asm-generic/sched.h.
Better?
Robert Love
diff -urN linux-2.5.31/include/asm-generic/sched.h linux/include/asm-generic/sched.h --- linux-2.5.31/include/asm-generic/sched.h Wed Dec 31 19:00:00 1969 +++ linux/include/asm-generic/sched.h Mon Aug 26 16:20:50 2002 @@ -0,0 +1,14 @@ +#ifndef _LINUX_SCHED_H +#define _LINUX_SCHED_H + +/* + * include/asm-generic/sched.h - generic and default versions of per-arch + * scheduler bits + */ + +/* + * per-architecture load balancing logic, e.g. for hyperthreading + */ +#define arch_load_balance(x, y) (0) + +#endif /* _LINUX_SCHED_H */ diff -urN linux-2.5.31/include/asm-i386/sched.h linux/include/asm-i386/sched.h --- linux-2.5.31/include/asm-i386/sched.h Wed Dec 31 19:00:00 1969 +++ linux/include/asm-i386/sched.h Mon Aug 26 16:22:33 2002 @@ -0,0 +1,7 @@ +#ifndef _I386_SCHED_H +#define _I386_SCHED_H + +/* nothing to see here, move along */ +#include <asm-generic/sched.h> + +#endif /* _I386_SCHED_H */ diff -urN linux-2.5.31/kernel/sched.c linux/kernel/sched.c --- linux-2.5.31/kernel/sched.c Sat Aug 10 21:41:24 2002 +++ linux/kernel/sched.c Mon Aug 26 16:21:35 2002 @@ -29,6 +29,7 @@ #include <linux/security.h> #include <linux/notifier.h> #include <linux/delay.h> +#include <asm/sched.h> /* * Convert user-nice values [ -20 ... 0 ... 19 ] @@ -639,6 +640,12 @@ runqueue_t *busiest, *rq_src; /* + * Handle architecture-specific balancing, such as hyperthreading. + */ + if (arch_load_balance(this_cpu, idle)) + return NULL; + + /* * We search all runqueues to find the most busy one. * We do this lockless to reduce cache-bouncing overhead, * we re-check the 'best' source CPU later on again, with - 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/
|  |