public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4
@ 2005-10-14  0:55 Peter Williams
  2005-10-29  2:35 ` Peter Williams
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Peter Williams @ 2005-10-14  0:55 UTC (permalink / raw)
  To: Linux Kernel Mailing List
  Cc: Chris Han, Con Kolivas, William Lee Irwin III, Jake Moilanen

This version contains a new scheduler, spa_svr, which is a minor 
extension of spa_no_frills intended for use on servers.  It makes no 
attempt to improve interactive responsiveness but includes a simplified 
version of the throughput bonus mechanism found in Zaphod.  This 
mechanism attempts to minimize the time tasks spend on run queues 
waiting for CPU access when the system is moderately loaded by giving 
tasks temporary priority bonuses based on the relationship between the 
recent average time spent on run queues and on a cpu per cycle. 
(Although it's effectiveness tends to disappear when the system is fully 
loaded, it is still useful as considerable delay can be seen on systems 
with quite low average loads due to lack of serendipity.)

A patch for 2.6.14-rc4 is available at:

<http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.3-for-2.6.14-rc4.patch?download>

and a patch to upgrade the 6.1.2 version for 2.6.13 to 6.1.3 is
available at:

<http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.2-to-6.1.3-for-2.6.13.patch?download>

Very Brief Documentation:

You can select a default scheduler at kernel build time.  If you wish to
boot with a scheduler other than the default it can be selected at boot
time by adding:

cpusched=<scheduler>

to the boot command line where <scheduler> is one of: ingosched,
nicksched, staircase, spa_no_frills, spa_ws, spa_svr or zaphod.  If you 
don't change the default when you build the kernel the default scheduler 
will be ingosched (which is the normal scheduler).

The scheduler in force on a running system can be determined by the
contents of:

/proc/scheduler

Control parameters for the scheduler can be read/set via files in:

/sys/cpusched/<scheduler>/

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4
  2005-10-14  0:55 [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4 Peter Williams
@ 2005-10-29  2:35 ` Peter Williams
  2005-11-07 22:01 ` Peter Williams
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 15+ messages in thread
From: Peter Williams @ 2005-10-29  2:35 UTC (permalink / raw)
  To: Linux Kernel Mailing List
  Cc: Chris Han, Con Kolivas, William Lee Irwin III, Jake Moilanen

Peter Williams wrote:
> This version contains a new scheduler, spa_svr, which is a minor 
> extension of spa_no_frills intended for use on servers.  It makes no 
> attempt to improve interactive responsiveness but includes a simplified 
> version of the throughput bonus mechanism found in Zaphod.  This 
> mechanism attempts to minimize the time tasks spend on run queues 
> waiting for CPU access when the system is moderately loaded by giving 
> tasks temporary priority bonuses based on the relationship between the 
> recent average time spent on run queues and on a cpu per cycle. 
> (Although it's effectiveness tends to disappear when the system is fully 
> loaded, it is still useful as considerable delay can be seen on systems 
> with quite low average loads due to lack of serendipity.)
> 
> A patch for 2.6.14-rc4 is available at:
> 
> <http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.3-for-2.6.14-rc4.patch?download> 
> 
> 
> and a patch to upgrade the 6.1.2 version for 2.6.13 to 6.1.3 is
> available at:
> 
> <http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.2-to-6.1.3-for-2.6.13.patch?download> 
> 
> 
> Very Brief Documentation:
> 
> You can select a default scheduler at kernel build time.  If you wish to
> boot with a scheduler other than the default it can be selected at boot
> time by adding:
> 
> cpusched=<scheduler>
> 
> to the boot command line where <scheduler> is one of: ingosched,
> nicksched, staircase, spa_no_frills, spa_ws, spa_svr or zaphod.  If you 
> don't change the default when you build the kernel the default scheduler 
> will be ingosched (which is the normal scheduler).
> 
> The scheduler in force on a running system can be determined by the
> contents of:
> 
> /proc/scheduler
> 
> Control parameters for the scheduler can be read/set via files in:
> 
> /sys/cpusched/<scheduler>/
> 
> Peter

A patch for the 2.6.14 official release kernel is now available at:

<http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.3-for-2.6.14.patch?download>

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4
  2005-10-14  0:55 [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4 Peter Williams
  2005-10-29  2:35 ` Peter Williams
@ 2005-11-07 22:01 ` Peter Williams
  2005-11-11  3:00 ` [PATCH] Staircase v13 for plugsched 6.1.3 Con Kolivas
  2005-11-11  3:05 ` [PATCH] plugsched - update Kconfig Con Kolivas
  3 siblings, 0 replies; 15+ messages in thread
From: Peter Williams @ 2005-11-07 22:01 UTC (permalink / raw)
  To: Linux Kernel Mailing List
  Cc: Chris Han, Con Kolivas, William Lee Irwin III, Jake Moilanen

Peter Williams wrote:
> This version contains a new scheduler, spa_svr, which is a minor 
> extension of spa_no_frills intended for use on servers.  It makes no 
> attempt to improve interactive responsiveness but includes a simplified 
> version of the throughput bonus mechanism found in Zaphod.  This 
> mechanism attempts to minimize the time tasks spend on run queues 
> waiting for CPU access when the system is moderately loaded by giving 
> tasks temporary priority bonuses based on the relationship between the 
> recent average time spent on run queues and on a cpu per cycle. 
> (Although it's effectiveness tends to disappear when the system is fully 
> loaded, it is still useful as considerable delay can be seen on systems 
> with quite low average loads due to lack of serendipity.)
> 
> A patch for 2.6.14-rc4 is available at:
> 
> <http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.3-for-2.6.14-rc4.patch?download> 
> 
> 
> and a patch to upgrade the 6.1.2 version for 2.6.13 to 6.1.3 is
> available at:
> 
> <http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.2-to-6.1.3-for-2.6.13.patch?download> 
> 
> 
> Very Brief Documentation:
> 
> You can select a default scheduler at kernel build time.  If you wish to
> boot with a scheduler other than the default it can be selected at boot
> time by adding:
> 
> cpusched=<scheduler>
> 
> to the boot command line where <scheduler> is one of: ingosched,
> nicksched, staircase, spa_no_frills, spa_ws, spa_svr or zaphod.  If you 
> don't change the default when you build the kernel the default scheduler 
> will be ingosched (which is the normal scheduler).
> 
> The scheduler in force on a running system can be determined by the
> contents of:
> 
> /proc/scheduler
> 
> Control parameters for the scheduler can be read/set via files in:
> 
> /sys/cpusched/<scheduler>/
> 
> Peter

A patch for the 2.6.14-mm1 kernel is now available at:

<http://prdownloads.sourceforge.net/cpuse/plugsched-6.1.3-for-2.6.14-mm1.patch?download>

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH] Staircase v13 for plugsched 6.1.3
  2005-10-14  0:55 [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4 Peter Williams
  2005-10-29  2:35 ` Peter Williams
  2005-11-07 22:01 ` Peter Williams
@ 2005-11-11  3:00 ` Con Kolivas
  2005-11-13  1:36   ` Peter Williams
  2005-11-11  3:05 ` [PATCH] plugsched - update Kconfig Con Kolivas
  3 siblings, 1 reply; 15+ messages in thread
From: Con Kolivas @ 2005-11-11  3:00 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

[-- Attachment #1: Type: text/plain, Size: 114 bytes --]

Hi Peter et al

Here is an update to bring plugsched in line with the current version of 
staircase.

Cheers,
Con

[-- Attachment #2: plugsched-staircase11.6_13.patch --]
[-- Type: text/x-diff, Size: 7889 bytes --]

Update plugsched v6.1.3 to staircase version 13

Signed-off-by: Con Kolivas <kernel@kolivas.org>

 include/linux/sched_task.h |    2
 kernel/staircase.c         |  107 +++++++++++++++++++++++----------------------
 2 files changed, 57 insertions(+), 52 deletions(-)

Index: linux-2.6.14-plugsched/include/linux/sched_task.h
===================================================================
--- linux-2.6.14-plugsched.orig/include/linux/sched_task.h	2005-11-11 12:38:57.000000000 +1100
+++ linux-2.6.14-plugsched/include/linux/sched_task.h	2005-11-11 13:10:30.000000000 +1100
@@ -29,7 +29,7 @@ struct ingo_sched_drv_task {
 struct staircase_sched_drv_task {
 	unsigned long sflags;
 	unsigned long runtime, totalrun, ns_debit;
-	unsigned int burst;
+	unsigned int bonus;
 	unsigned int slice, time_slice;
 };
 #endif
Index: linux-2.6.14-plugsched/kernel/staircase.c
===================================================================
--- linux-2.6.14-plugsched.orig/kernel/staircase.c	2005-11-11 13:26:32.000000000 +1100
+++ linux-2.6.14-plugsched/kernel/staircase.c	2005-11-11 13:53:11.000000000 +1100
@@ -2,8 +2,8 @@
  *  kernel/staircase.c
  *  Copyright (C) 1991-2005  Linus Torvalds
  *
- * 2005-08-20 Staircase scheduler by Con Kolivas
- *            Staircase v11.6
+ * 2005-11-11 Staircase scheduler by Con Kolivas <kernel@kolivas.org>
+ *            Staircase v13
  */
 #include <linux/sched.h>
 #include <linux/init.h>
@@ -148,30 +148,36 @@ static inline void __activate_idle_task(
 #endif
 
 /*
- * burst - extra intervals an interactive task can run for at best priority
- * instead of descending priorities.
+ * Bonus - How much higher than its base priority an interactive task can run.
  */
-static inline unsigned int burst(const task_t *p)
+static inline unsigned int bonus(const task_t *p)
 {
-	if (likely(!rt_task(p))) {
-		unsigned int task_user_prio = TASK_USER_PRIO(p);
-		return 39 - task_user_prio;
-	} else
-		return p->sdu.staircase.burst;
+	return TASK_USER_PRIO(p);
 }
 
-static void inc_burst(task_t *p)
+/*
+ * We increase our bonus by sleeping more than the time we ran.
+ * The ratio of sleep to run gives us the cpu% that we last ran and determines
+ * the maximum bonus we can acquire.
+ */
+static void inc_bonus(task_t *p, unsigned long totalrun, unsigned long sleep)
 {
-	unsigned int best_burst;
-	best_burst = burst(p);
-	if (p->sdu.staircase.burst < best_burst)
-		p->sdu.staircase.burst++;
+	unsigned int best_bonus;
+
+	best_bonus = sleep / (totalrun + 1);
+	if (p->sdu.staircase.bonus >= best_bonus)
+		return;
+
+	p->sdu.staircase.bonus++;
+	best_bonus = bonus(p);
+	if (p->sdu.staircase.bonus > best_bonus)
+		p->sdu.staircase.bonus = best_bonus;
 }
 
-static void dec_burst(task_t *p)
+static void dec_bonus(task_t *p)
 {
-	if (p->sdu.staircase.burst)
-		p->sdu.staircase.burst--;
+	if (p->sdu.staircase.bonus)
+		p->sdu.staircase.bonus--;
 }
 
 static inline unsigned int rr_interval(const task_t * p)
@@ -187,7 +193,7 @@ static inline unsigned int rr_interval(c
 
 /*
  * slice - the duration a task runs before getting requeued at its best
- * priority and has its burst decremented.
+ * priority and has its bonus decremented.
  */
 static inline unsigned int slice(const task_t *p)
 {
@@ -195,44 +201,42 @@ static inline unsigned int slice(const t
 
 	slice = rr = rr_interval(p);
 	if (likely(!rt_task(p)))
-		slice += burst(p) * rr;
+		slice += bonus(p) * rr;
 
 	return slice;
 }
 
 /*
- * sched_interactive - sysctl which allows interactive tasks to have bursts
+ * sched_interactive - sysctl which allows interactive tasks to have bonuss
  */
 int sched_interactive = 1;
 
 /*
- * effective_prio - dynamic priority dependent on burst.
+ * effective_prio - dynamic priority dependent on bonus.
  * The priority normally decreases by one each RR_INTERVAL.
- * As the burst increases the priority stays at the top "stair" or
+ * As the bonus increases the initial priority starts at a higher "stair" or
  * priority for longer.
  */
 static int effective_prio(task_t *p)
 {
 	int prio;
-	unsigned int full_slice, used_slice, first_slice;
-	unsigned int best_burst, rr;
+	unsigned int full_slice, used_slice = 0;
+	unsigned int best_bonus, rr;
+
 	if (rt_task(p))
 		return p->prio;
 
-	best_burst = burst(p);
 	full_slice = slice(p);
+	if (full_slice > p->sdu.staircase.slice)
+		used_slice = full_slice - p->sdu.staircase.slice;
+
+	best_bonus = bonus(p);
+	prio = MAX_RT_PRIO + best_bonus;
+	if (sched_interactive && !sched_compute)
+		prio -= p->sdu.staircase.bonus;
+
 	rr = rr_interval(p);
-	used_slice = full_slice - p->sdu.staircase.slice;
-	if (p->sdu.staircase.burst > best_burst)
-		p->sdu.staircase.burst = best_burst;
-	first_slice = rr;
-	if (sched_interactive && !sched_compute && p->mm)
-		first_slice *= (p->sdu.staircase.burst + 1);
-	prio = STAIRCASE_MAX_PRIO - 1 - best_burst;
-
-	if (used_slice < first_slice)
-		return prio;
-	prio += 1 + (used_slice - first_slice) / rr;
+	prio += used_slice / rr;
 	if (prio > STAIRCASE_MAX_PRIO - 1)
 		prio = STAIRCASE_MAX_PRIO - 1;
 
@@ -246,7 +250,7 @@ static void continue_slice(task_t *p)
 	if (total_run >= p->sdu.staircase.slice) {
  		p->sdu.staircase.totalrun -=
  			JIFFIES_TO_NS(p->sdu.staircase.slice);
-		dec_burst(p);
+		dec_bonus(p);
 	} else {
 		unsigned int remainder;
 		p->sdu.staircase.slice -= total_run;
@@ -268,19 +272,20 @@ static inline void recalc_task_prio(task
 
 	/*
 	 * Priority is elevated back to best by amount of sleep_time.
-	 * sleep_time is scaled down by number of tasks currently running.
 	 */
-	if (rq_running > 1)
-		sleep_time /= rq_running;
 
 	p->sdu.staircase.totalrun += p->sdu.staircase.runtime;
 	if (NS_TO_JIFFIES(p->sdu.staircase.totalrun) >=
 		p->sdu.staircase.slice && NS_TO_JIFFIES(sleep_time) <
 		p->sdu.staircase.slice) {
 			p->sdu.staircase.sflags &= ~SF_NONSLEEP;
-			dec_burst(p);
-			p->sdu.staircase.totalrun += sleep_time -
+			dec_bonus(p);
+			p->sdu.staircase.totalrun -=
 				JIFFIES_TO_NS(p->sdu.staircase.slice);
+			if (sleep_time > p->sdu.staircase.totalrun)
+				p->sdu.staircase.totalrun = 0;
+			else
+				p->sdu.staircase.totalrun -= sleep_time;
 			goto out;
 	}
 
@@ -297,7 +302,7 @@ static inline void recalc_task_prio(task
 
 	if (sleep_time >= p->sdu.staircase.totalrun) {
 		if (!(p->sdu.staircase.sflags & SF_NONSLEEP))
-			inc_burst(p);
+			inc_bonus(p, p->sdu.staircase.totalrun, sleep_time);
 		p->sdu.staircase.totalrun = 0;
 		goto out;
 	}
@@ -316,9 +321,9 @@ out:
  */
 static void activate_task(task_t *p, runqueue_t *rq, int local)
 {
-	unsigned long long now;
+	unsigned long long now = sched_clock();
+	unsigned long rr = rr_interval(p);
 
-	now = sched_clock();
 #ifdef CONFIG_SMP
 	if (!local) {
 		/* Compensate for drifting sched_clock */
@@ -328,7 +333,7 @@ static void activate_task(task_t *p, run
 	}
 #endif
 	p->sdu.staircase.slice = slice(p);
-	p->sdu.staircase.time_slice = rr_interval(p);
+	p->sdu.staircase.time_slice = p->sdu.staircase.slice % rr ? : rr;
 	recalc_task_prio(p, now, rq->nr_running);
 	p->sdu.staircase.sflags &= ~SF_NONSLEEP;
 	p->prio = effective_prio(p);
@@ -432,9 +437,9 @@ static void staircase_wake_up_new_task(t
 	BUG_ON(p->state != TASK_RUNNING);
 
 	/*
-	 * Forked process gets no burst to prevent fork bombs.
+	 * Forked process gets no bonus to prevent fork bombs.
 	 */
-	p->sdu.staircase.burst = 0;
+	p->sdu.staircase.bonus = 0;
 
 	if (likely(cpu == this_cpu)) {
 		current->sdu.staircase.sflags |= SF_NONSLEEP;
@@ -637,10 +642,10 @@ static void staircase_tick(struct task_s
 		goto out_unlock;
 	p->sdu.staircase.ns_debit %= NSJIFFY;
 	/*
-	 * Tasks lose burst each time they use up a full slice().
+	 * Tasks lose bonus each time they use up a full slice().
 	 */
 	if (!--p->sdu.staircase.slice) {
-		dec_burst(p);
+		dec_bonus(p);
 		p->sdu.staircase.slice = slice(p);
 		time_slice_expired(p, rq);
 		p->sdu.staircase.totalrun = 0;

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH] plugsched - update Kconfig
  2005-10-14  0:55 [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4 Peter Williams
                   ` (2 preceding siblings ...)
  2005-11-11  3:00 ` [PATCH] Staircase v13 for plugsched 6.1.3 Con Kolivas
@ 2005-11-11  3:05 ` Con Kolivas
  2005-11-11  3:11   ` Con Kolivas
  2005-11-11  3:17   ` [PATCH] plugsched - update Kconfig-1 Con Kolivas
  3 siblings, 2 replies; 15+ messages in thread
From: Con Kolivas @ 2005-11-11  3:05 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

[-- Attachment #1: Type: text/plain, Size: 113 bytes --]

Hi Peter et al

I find the Kconfig menu layout a little confusing and suggest the following 
patch.

Cheers,
Con

[-- Attachment #2: plugsched-6.1.3-update-Kconfig.patch --]
[-- Type: text/x-diff, Size: 4499 bytes --]

Update the Kconfig menu for plugsched

Make the default cpu scheduler choice depend on the presence of that scheduler
being configured in rather than selecting it since the default is for all to
be built in unless manually deselected in the embedded menu.

Make a submenu for spa schedulers instead of having a flat list.

Signed-off-by: Con Kolivas <kernel@kolivas.org>

 Kconfig |   32 ++++++++++++--------------------
 1 files changed, 12 insertions(+), 20 deletions(-)

Index: linux-2.6.14-plugsched/init/Kconfig
===================================================================
--- linux-2.6.14-plugsched.orig/init/Kconfig	2005-11-11 13:35:06.000000000 +1100
+++ linux-2.6.14-plugsched/init/Kconfig	2005-11-11 13:45:25.000000000 +1100
@@ -276,28 +276,28 @@ choice
 
 config CPUSCHED_DEFAULT_INGO
 	bool "Ingosched cpu scheduler"
-	select CPUSCHED_INGO
+	depends on CPUSCHED_INGO
 	---help---
 	  This is the default cpu scheduler which is an O(1) dual priority
 	  array scheduler with a hybrid interactive design.
 
 config CPUSCHED_DEFAULT_STAIRCASE
 	bool "Staircase cpu scheduler"
-	select CPUSCHED_STAIRCASE
+	depends on CPUSCHED_STAIRCASE
 	---help---
 	  This scheduler is an O(1) single priority array with a foreground-
 	  background interactive design.
 
 config CPUSCHED_DEFAULT_SPA_NF
 	bool "Single priority array (SPA) cpu scheduler (no frills)"
-	select CPUSCHED_SPA_NF
+	depends on CPUSCHED_SPA_NF
 	---help---
 	  This is a simple round robin scheduler with a O(1) single priority
 	  array.
 
 config CPUSCHED_DEFAULT_SPA_WS
 	bool "Single priority array (SPA) cpu scheduler (work station)"
-	select CPUSCHED_SPA_WS
+	depends on CPUSCHED_SPA_WS
 	---help---
 	  This is a scheduler with a O(1) single priority array intended for
 	  use on work stations.  It has modifications to improve interactive
@@ -305,7 +305,7 @@ config CPUSCHED_DEFAULT_SPA_WS
 
 config CPUSCHED_DEFAULT_SPA_SVR
 	bool "Single priority array (SPA) cpu scheduler (server)"
-	select CPUSCHED_SPA_SVR
+	depends on CPUSCHED_SPA_SVR
 	---help---
 	  This is a scheduler with a O(1) single priority array intended for
 	  use on server.  It has modifications to reduce CPU delay at moderate
@@ -313,7 +313,7 @@ config CPUSCHED_DEFAULT_SPA_SVR
 
 config CPUSCHED_DEFAULT_ZAPHOD
 	bool "Zaphod cpu scheduler"
-	select CPUSCHED_ZAPHOD
+	depends on CPUSCHED_ZAPHOD
 	---help---
 	  This scheduler is an O(1) single priority array with interactive
 	  bonus, throughput bonus, soft and hard CPU rate caps and a runtime
@@ -322,7 +322,7 @@ config CPUSCHED_DEFAULT_ZAPHOD
 
 config CPUSCHED_DEFAULT_NICK
 	bool "Nicksched cpu scheduler"
-	select CPUSCHED_NICK
+	depends on CPUSCHED_NICK
 	---help---
 	  This is the default cpu scheduler which is an O(1) dual priority
 	  array scheduler with a hybrid interactive design as modified by
@@ -358,7 +358,7 @@ config CPUSCHED_STAIRCASE
 	  To boot this cpu scheduler, if it is not the default, use the
 	  bootparam "cpusched=staircase".
 
-config CPUSCHED_SPA
+menuconfig CPUSCHED_SPA
 	bool "SPA cpu schedulers" if EMBEDDED
 	depends on PLUGSCHED
 	default y
@@ -366,9 +366,7 @@ config CPUSCHED_SPA
 	  Support for O(1) single priority array schedulers.
 
 config CPUSCHED_SPA_NF
-	bool "SPA cpu scheduler (no frills)" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "SPA cpu scheduler (no frills)" if CPUSCHED_SPA
 	default y
 	---help---
 	  This scheduler is a simple round robin O(1) single priority array
@@ -379,9 +377,7 @@ config CPUSCHED_SPA_NF
 	  bootparam "cpusched=spa_no_frills".
 
 config CPUSCHED_SPA_WS
-	bool "SPA cpu scheduler (work station)" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "SPA cpu scheduler (work station)" if CPUSCHED_SPA
 	default y
 	---help---
 	  This is a scheduler with a O(1) single priority array intended for
@@ -391,9 +387,7 @@ config CPUSCHED_SPA_WS
 	  bootparam "cpusched=spa_ws".
 
 config CPUSCHED_SPA_SVR
-	bool "SPA cpu scheduler (server)" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "SPA cpu scheduler (server)" if CPUSCHED_SPA
 	default y
 	---help---
 	  This is a scheduler with a O(1) single priority array intended for
@@ -403,9 +397,7 @@ config CPUSCHED_SPA_SVR
 	  bootparam "cpusched=spa_svr".
 
 config CPUSCHED_ZAPHOD
-	bool "Zaphod cpu scheduler" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "Zaphod cpu scheduler" if CPUSCHED_SPA
 	default y
 	---help---
 	  This scheduler is an O(1) single priority array with interactive

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig
  2005-11-11  3:05 ` [PATCH] plugsched - update Kconfig Con Kolivas
@ 2005-11-11  3:11   ` Con Kolivas
  2005-11-11  3:17   ` [PATCH] plugsched - update Kconfig-1 Con Kolivas
  1 sibling, 0 replies; 15+ messages in thread
From: Con Kolivas @ 2005-11-11  3:11 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

On Fri, 11 Nov 2005 02:05 pm, Con Kolivas wrote:
> Hi Peter et al
>
> I find the Kconfig menu layout a little confusing and suggest the following
> patch.

Actually I changed my mind about the first part. If you deselect plugsched you 
need some way of selecting the default scheduler, sorry. I'll spin up a patch 
with just the spa submenu.

Cheers,
Con

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH] plugsched - update Kconfig-1
  2005-11-11  3:05 ` [PATCH] plugsched - update Kconfig Con Kolivas
  2005-11-11  3:11   ` Con Kolivas
@ 2005-11-11  3:17   ` Con Kolivas
  2005-11-13  1:34     ` Peter Williams
  1 sibling, 1 reply; 15+ messages in thread
From: Con Kolivas @ 2005-11-11  3:17 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

[-- Attachment #1: Type: text/plain, Size: 57 bytes --]

Here's a respin just changing the spa menu.

Cheers,
Con

[-- Attachment #2: plugsched-6.1.3-update-Kconfig-1.patch --]
[-- Type: text/x-diff, Size: 2145 bytes --]

Make a submenu for spa schedulers instead of having a flat list.

Signed-off-by: Con Kolivas <kernel@kolivas.org>

 Kconfig |   18 +++++-------------
 1 files changed, 5 insertions(+), 13 deletions(-)

Index: linux-2.6.14-plugsched/init/Kconfig
===================================================================
--- linux-2.6.14-plugsched.orig/init/Kconfig	2005-11-11 14:12:12.000000000 +1100
+++ linux-2.6.14-plugsched/init/Kconfig	2005-11-11 14:13:26.000000000 +1100
@@ -358,7 +358,7 @@ config CPUSCHED_STAIRCASE
 	  To boot this cpu scheduler, if it is not the default, use the
 	  bootparam "cpusched=staircase".
 
-config CPUSCHED_SPA
+menuconfig CPUSCHED_SPA
 	bool "SPA cpu schedulers" if EMBEDDED
 	depends on PLUGSCHED
 	default y
@@ -366,9 +366,7 @@ config CPUSCHED_SPA
 	  Support for O(1) single priority array schedulers.
 
 config CPUSCHED_SPA_NF
-	bool "SPA cpu scheduler (no frills)" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "SPA cpu scheduler (no frills)" if CPUSCHED_SPA
 	default y
 	---help---
 	  This scheduler is a simple round robin O(1) single priority array
@@ -379,9 +377,7 @@ config CPUSCHED_SPA_NF
 	  bootparam "cpusched=spa_no_frills".
 
 config CPUSCHED_SPA_WS
-	bool "SPA cpu scheduler (work station)" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "SPA cpu scheduler (work station)" if CPUSCHED_SPA
 	default y
 	---help---
 	  This is a scheduler with a O(1) single priority array intended for
@@ -391,9 +387,7 @@ config CPUSCHED_SPA_WS
 	  bootparam "cpusched=spa_ws".
 
 config CPUSCHED_SPA_SVR
-	bool "SPA cpu scheduler (server)" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "SPA cpu scheduler (server)" if CPUSCHED_SPA
 	default y
 	---help---
 	  This is a scheduler with a O(1) single priority array intended for
@@ -403,9 +397,7 @@ config CPUSCHED_SPA_SVR
 	  bootparam "cpusched=spa_svr".
 
 config CPUSCHED_ZAPHOD
-	bool "Zaphod cpu scheduler" if EMBEDDED
-	depends on PLUGSCHED
-	select CPUSCHED_SPA
+	bool "Zaphod cpu scheduler" if CPUSCHED_SPA
 	default y
 	---help---
 	  This scheduler is an O(1) single priority array with interactive

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-11  3:17   ` [PATCH] plugsched - update Kconfig-1 Con Kolivas
@ 2005-11-13  1:34     ` Peter Williams
  2005-11-13  1:44       ` Con Kolivas
  0 siblings, 1 reply; 15+ messages in thread
From: Peter Williams @ 2005-11-13  1:34 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

Con Kolivas wrote:
> Here's a respin just changing the spa menu.
> 

While agreeing that PlugSched's configuration needs overhaul I don't 
think this is it as it just makes things more confusing.  I'll put 
fixing the configuration code on my list of things to do.  They main 
changes I see as necessary are:

1. Make the ability to select which schedulers are built in independent 
of EMBEDDED.
2. Only offer builtin schedulers as choice for the default scheduler.
3. Only build in ingosched if PLUGSCHED is not configured.

I'll try to get this change done next week.

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Staircase v13 for plugsched 6.1.3
  2005-11-11  3:00 ` [PATCH] Staircase v13 for plugsched 6.1.3 Con Kolivas
@ 2005-11-13  1:36   ` Peter Williams
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Williams @ 2005-11-13  1:36 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

Con Kolivas wrote:
> Hi Peter et al
> 
> Here is an update to bring plugsched in line with the current version of 
> staircase.
> 

Applied to my sources and will be in the next release (probably 
tomorrow) after some more testing.

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-13  1:34     ` Peter Williams
@ 2005-11-13  1:44       ` Con Kolivas
  2005-11-13  5:22         ` Peter Williams
  0 siblings, 1 reply; 15+ messages in thread
From: Con Kolivas @ 2005-11-13  1:44 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

On Sun, 13 Nov 2005 12:34, Peter Williams wrote:
> Con Kolivas wrote:
> > Here's a respin just changing the spa menu.
>
> While agreeing that PlugSched's configuration needs overhaul I don't
> think this is it as it just makes things more confusing.  I'll put
> fixing the configuration code on my list of things to do.  They main
> changes I see as necessary are:
>
> 1. Make the ability to select which schedulers are built in independent
> of EMBEDDED.
> 2. Only offer builtin schedulers as choice for the default scheduler.
> 3. Only build in ingosched if PLUGSCHED is not configured.

I disagree with 3. Surely people might want to build in only one scheduler 
that is not ingosched without other choices.

Cheers,
Con

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-13  1:44       ` Con Kolivas
@ 2005-11-13  5:22         ` Peter Williams
  2005-11-13  5:37           ` Con Kolivas
  0 siblings, 1 reply; 15+ messages in thread
From: Peter Williams @ 2005-11-13  5:22 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

Con Kolivas wrote:
> On Sun, 13 Nov 2005 12:34, Peter Williams wrote:
> 
>>Con Kolivas wrote:
>>
>>>Here's a respin just changing the spa menu.
>>
>>While agreeing that PlugSched's configuration needs overhaul I don't
>>think this is it as it just makes things more confusing.  I'll put
>>fixing the configuration code on my list of things to do.  They main
>>changes I see as necessary are:
>>
>>1. Make the ability to select which schedulers are built in independent
>>of EMBEDDED.
>>2. Only offer builtin schedulers as choice for the default scheduler.
>>3. Only build in ingosched if PLUGSCHED is not configured.
> 
> 
> I disagree with 3. Surely people might want to build in only one scheduler 
> that is not ingosched without other choices.

Yes, and they would be able to do that by selecting PLUGSCHED and then 
selecting only the scheduler that they want.  But this then leads to the 
observation that PLUGSCHED is probably makes things unnecessarily 
complex and all that is required is a means to select the schedulers to 
be built in and a choice of default (much like for the IO schedulers)?

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-13  5:22         ` Peter Williams
@ 2005-11-13  5:37           ` Con Kolivas
  2005-11-13  9:10             ` Peter Williams
  0 siblings, 1 reply; 15+ messages in thread
From: Con Kolivas @ 2005-11-13  5:37 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

On Sun, 13 Nov 2005 16:22, Peter Williams wrote:
> Con Kolivas wrote:
> > On Sun, 13 Nov 2005 12:34, Peter Williams wrote:
> >>1. Make the ability to select which schedulers are built in independent
> >>of EMBEDDED.
> >>2. Only offer builtin schedulers as choice for the default scheduler.
> >>3. Only build in ingosched if PLUGSCHED is not configured.
> >
> > I disagree with 3. Surely people might want to build in only one
> > scheduler that is not ingosched without other choices.
>
> Yes, and they would be able to do that by selecting PLUGSCHED and then
> selecting only the scheduler that they want.  But this then leads to the
> observation that PLUGSCHED is probably makes things unnecessarily
> complex and all that is required is a means to select the schedulers to
> be built in and a choice of default (much like for the IO schedulers)?

Indeed it may be better to remove the "plugsched" option entirely. Once 
patched in it's not like you are building the kernel without the plugsched 
infrastructure. Provided each extra scheduler does not increase the kernel 
size too much (and a test build with/without all schedulers should tell you 
that), it may be best to just have the scheduler choice in the top menu and 
only expose the "schedulers to build in" under embedded. 

Of course if adding all the schedulers adds a lot of size to the kernel then 
it would be best to retain the "build support for multiple cpu schedulers" 
and default it to off. Do you have a quick comparison of build sizes 
with/without the various cpu schedulers? Last time I checked, staircase was a 
few hundred bytes larger than mainline despite being 200 lines of code less, 
probably due to its largely inline nature.

Cheers,
Con

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-13  5:37           ` Con Kolivas
@ 2005-11-13  9:10             ` Peter Williams
  2005-11-13  9:30               ` Con Kolivas
  0 siblings, 1 reply; 15+ messages in thread
From: Peter Williams @ 2005-11-13  9:10 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

Con Kolivas wrote:
> On Sun, 13 Nov 2005 16:22, Peter Williams wrote:
> 
>>Con Kolivas wrote:
>>
>>>On Sun, 13 Nov 2005 12:34, Peter Williams wrote:
>>>
>>>>1. Make the ability to select which schedulers are built in independent
>>>>of EMBEDDED.
>>>>2. Only offer builtin schedulers as choice for the default scheduler.
>>>>3. Only build in ingosched if PLUGSCHED is not configured.
>>>
>>>I disagree with 3. Surely people might want to build in only one
>>>scheduler that is not ingosched without other choices.
>>
>>Yes, and they would be able to do that by selecting PLUGSCHED and then
>>selecting only the scheduler that they want.  But this then leads to the
>>observation that PLUGSCHED is probably makes things unnecessarily
>>complex and all that is required is a means to select the schedulers to
>>be built in and a choice of default (much like for the IO schedulers)?
> 
> 
> Indeed it may be better to remove the "plugsched" option entirely. Once 
> patched in it's not like you are building the kernel without the plugsched 
> infrastructure. Provided each extra scheduler does not increase the kernel 
> size too much (and a test build with/without all schedulers should tell you 
> that), it may be best to just have the scheduler choice in the top menu and 
> only expose the "schedulers to build in" under embedded. 

I can't see why this should be restricted to embedded systems?

> 
> Of course if adding all the schedulers adds a lot of size to the kernel then 
> it would be best to retain the "build support for multiple cpu schedulers" 
> and default it to off.

You achieve the same just by selecting only one scheduler.  PLUGSCHED 
(currently) doesn't directly control the inclusion of any code and it's 
only effect is by controlling which schedulers are included.  It may be 
possible to change this so that the checking of the boot time scheduler 
selection code is excluded.

> Do you have a quick comparison of build sizes 
> with/without the various cpu schedulers?

I'll check. I'll also see how much difference the boot time selection 
code adds but I doubt whether it's very much.

> Last time I checked, staircase was a 
> few hundred bytes larger than mainline despite being 200 lines of code less, 
> probably due to its largely inline nature.

Each scheduler costs about 10kB on average.  Mine are the largest :-( 
(too many features including making extra stats available via /proc?) 
and I should look at improving that.

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-13  9:10             ` Peter Williams
@ 2005-11-13  9:30               ` Con Kolivas
  2005-11-13 22:52                 ` Peter Williams
  0 siblings, 1 reply; 15+ messages in thread
From: Con Kolivas @ 2005-11-13  9:30 UTC (permalink / raw)
  To: Peter Williams
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

On Sun, 13 Nov 2005 20:10, Peter Williams wrote:
> Con Kolivas wrote:
> > On Sun, 13 Nov 2005 16:22, Peter Williams wrote:
> >>Con Kolivas wrote:
> >>>On Sun, 13 Nov 2005 12:34, Peter Williams wrote:
> >>>>1. Make the ability to select which schedulers are built in independent
> >>>>of EMBEDDED.
> >>>>2. Only offer builtin schedulers as choice for the default scheduler.
> >>>>3. Only build in ingosched if PLUGSCHED is not configured.
> >>>
> >>>I disagree with 3. Surely people might want to build in only one
> >>>scheduler that is not ingosched without other choices.
> >>
> >>Yes, and they would be able to do that by selecting PLUGSCHED and then
> >>selecting only the scheduler that they want.  But this then leads to the
> >>observation that PLUGSCHED is probably makes things unnecessarily
> >>complex and all that is required is a means to select the schedulers to
> >>be built in and a choice of default (much like for the IO schedulers)?
> >
> > Indeed it may be better to remove the "plugsched" option entirely. Once
> > patched in it's not like you are building the kernel without the
> > plugsched infrastructure. Provided each extra scheduler does not increase
> > the kernel size too much (and a test build with/without all schedulers
> > should tell you that), it may be best to just have the scheduler choice
> > in the top menu and only expose the "schedulers to build in" under
> > embedded.
>
> I can't see why this should be restricted to embedded systems?

It's just convention that size options go in there; it's not really just for 
embedded systems.

Cheers,
Con

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] plugsched - update Kconfig-1
  2005-11-13  9:30               ` Con Kolivas
@ 2005-11-13 22:52                 ` Peter Williams
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Williams @ 2005-11-13 22:52 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Linux Kernel Mailing List, Chris Han, William Lee Irwin III,
	Jake Moilanen

Con Kolivas wrote:
> On Sun, 13 Nov 2005 20:10, Peter Williams wrote:
> 
>>Con Kolivas wrote:
>>
>>>On Sun, 13 Nov 2005 16:22, Peter Williams wrote:
>>>
>>>>Con Kolivas wrote:
>>>>
>>>>>On Sun, 13 Nov 2005 12:34, Peter Williams wrote:
>>>>>
>>>>>>1. Make the ability to select which schedulers are built in independent
>>>>>>of EMBEDDED.
>>>>>>2. Only offer builtin schedulers as choice for the default scheduler.
>>>>>>3. Only build in ingosched if PLUGSCHED is not configured.
>>>>>
>>>>>I disagree with 3. Surely people might want to build in only one
>>>>>scheduler that is not ingosched without other choices.
>>>>
>>>>Yes, and they would be able to do that by selecting PLUGSCHED and then
>>>>selecting only the scheduler that they want.  But this then leads to the
>>>>observation that PLUGSCHED is probably makes things unnecessarily
>>>>complex and all that is required is a means to select the schedulers to
>>>>be built in and a choice of default (much like for the IO schedulers)?
>>>
>>>Indeed it may be better to remove the "plugsched" option entirely. Once
>>>patched in it's not like you are building the kernel without the
>>>plugsched infrastructure. Provided each extra scheduler does not increase
>>>the kernel size too much (and a test build with/without all schedulers
>>>should tell you that), it may be best to just have the scheduler choice
>>>in the top menu and only expose the "schedulers to build in" under
>>>embedded.
>>
>>I can't see why this should be restricted to embedded systems?
> 
> 
> It's just convention that size options go in there; it's not really just for 
> embedded systems.

OK.  I guess I'm sometimes guilty of taking things too literally :-(

I'll read up on Kconfig again before I make any changes.

Thanks
Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2005-11-13 22:52 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-14  0:55 [ANNOUNCE][RFC] PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4 Peter Williams
2005-10-29  2:35 ` Peter Williams
2005-11-07 22:01 ` Peter Williams
2005-11-11  3:00 ` [PATCH] Staircase v13 for plugsched 6.1.3 Con Kolivas
2005-11-13  1:36   ` Peter Williams
2005-11-11  3:05 ` [PATCH] plugsched - update Kconfig Con Kolivas
2005-11-11  3:11   ` Con Kolivas
2005-11-11  3:17   ` [PATCH] plugsched - update Kconfig-1 Con Kolivas
2005-11-13  1:34     ` Peter Williams
2005-11-13  1:44       ` Con Kolivas
2005-11-13  5:22         ` Peter Williams
2005-11-13  5:37           ` Con Kolivas
2005-11-13  9:10             ` Peter Williams
2005-11-13  9:30               ` Con Kolivas
2005-11-13 22:52                 ` Peter Williams

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox