* [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