PlugSched-6.1.3 for 2.6.13 and 2.6.14-rc4
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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
Quoted 27 lines · Peter Williams
This version contains a new scheduler,
spa_svr, which is a minor extension ofspa_no_frillsintended 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_svror 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:
Quoted 7 lines
/proc/schedulerControl 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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
Quoted 27 lines · Peter Williams
This version contains a new scheduler,
spa_svr, which is a minor extension ofspa_no_frillsintended 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_svror 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:
Quoted 7 lines
/proc/schedulerControl 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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
PATCH 1/1 Staircase v13 for plugsched 6.1.3
In reply to Peter WilliamsHi Peter et al
Here is an update to bring plugsched in line with the current version of staircase.
Cheers,
Con
Update plugsched v6.1.3 to staircase version 13
include/linux/sched_task.h | 2 kernel/staircase.c | 107 +++++++++++++++++++++++---------------------- 2 files changed, 57 insertions(+), 52 deletions(-)
include/linux/sched_task.h +1 -1
@@ -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
kernel/staircase.c +56 -51
213 lines not on this page · raw message
Re: [PATCH] Staircase v13 for plugsched 6.1.3
Quoted 4 lines · Con Kolivas
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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
PATCH 1/1 plugsched - update Kconfig
In reply to Peter WilliamsHi Peter et al
I find the Kconfig menu layout a little confusing and suggest the following patch.
Cheers,
Con
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.
Kconfig | 32 ++++++++++++-------------------- 1 files changed, 12 insertions(+), 20 deletions(-)
init/Kconfig +12 -20
@@ -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
Re: [PATCH] plugsched - update Kconfig
Quoted 4 lines · Con Kolivas
Hi Peter et al
I find the
Kconfigmenu 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
PATCH 1/1 plugsched - update Kconfig-1
In reply to Con KolivasHere's a respin just changing the spa menu.
Cheers,
Con
Make a submenu for spa schedulers instead of having a flat list.
Kconfig | 18 +++++------------- 1 files changed, 5 insertions(+), 13 deletions(-)
init/Kconfig +5 -13
@@ -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
Re: [PATCH] plugsched - update Kconfig-1
Quoted 2 lines · Con Kolivas
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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
Re: [PATCH] plugsched - update Kconfig-1
Quoted 8 lines · Peter Williams
Quoted 1 line · Con Kolivas
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:
Quoted 4 lines
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
Re: [PATCH] plugsched - update Kconfig-1
Quoted 11 lines · Con Kolivas
Quoted 9 lines · Peter Williams
Quoted 1 line · Con Kolivas
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:
Quoted 7 lines
Quoted 4 lines
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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
Re: [PATCH] plugsched - update Kconfig-1
Quoted 7 lines · Peter Williams
Quoted 6 lines · Con Kolivas
Quoted 4 lines · Peter Williams
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.
Quoted 8 lines
Quoted 2 lines
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
Re: [PATCH] plugsched - update Kconfig-1
Quoted 14 lines · Con Kolivas
Quoted 12 lines · Peter Williams
Quoted 9 lines · Con Kolivas
Quoted 4 lines · Peter Williams
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.
Quoted 8 lines
Quoted 5 lines
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?
Quoted 2 lines
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.
Quoted 1 line
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.
Quoted 1 line
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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
Re: [PATCH] plugsched - update Kconfig-1
Quoted 26 lines · Peter Williams
Quoted 17 lines · Con Kolivas
Quoted 7 lines · Peter Williams
Quoted 6 lines · Con Kolivas
Quoted 4 lines · Peter Williams
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.Quoted 8 lines
Quoted 2 lines
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)?
Quoted 7 lines
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.
Quoted 1 line
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
Re: [PATCH] plugsched - update Kconfig-1
Quoted 32 lines · Con Kolivas
Quoted 30 lines · Peter Williams
Quoted 27 lines · Con Kolivas
Quoted 9 lines · Peter Williams
Quoted 7 lines · Con Kolivas
Quoted 4 lines · Peter Williams
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.Quoted 8 lines
Quoted 2 lines
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.
Quoted 4 lines
Quoted 1 line
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
Signature · 4 lines
Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce