As a first step towards improving the power awareness of the scheduler,
this patch enables a "dumb" state where all power management is turned off.
Whatever additionally we put into the kernel for cpu power management must
do better than this in terms of performance as well as powersavings.
This will enable us to benchmark and optimize the power aware scheduler
from scratch.If we are to benchmark it against the performance of the
existing design, we will get sufficiently distracted by the performance
numbers and get steered away from a sane design.

Signed-off-by: Preeti U Murthy <[email protected]>
---

 arch/powerpc/Kconfig                   |    1 +
 arch/powerpc/platforms/powernv/Kconfig |   12 ++++++------
 drivers/cpufreq/Kconfig                |    2 ++
 drivers/cpuidle/Kconfig                |    2 ++
 kernel/Kconfig.sched                   |   11 +++++++++++
 5 files changed, 22 insertions(+), 6 deletions(-)
 create mode 100644 kernel/Kconfig.sched

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 80b94b0..b7fe36a 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -301,6 +301,7 @@ config HIGHMEM
 
 source kernel/Kconfig.hz
 source kernel/Kconfig.preempt
+source kernel/Kconfig.sched
 source "fs/Kconfig.binfmt"
 
 config HUGETLB_PAGE_SIZE_VARIABLE
diff --git a/arch/powerpc/platforms/powernv/Kconfig 
b/arch/powerpc/platforms/powernv/Kconfig
index 45a8ed0..b0ef8b1 100644
--- a/arch/powerpc/platforms/powernv/Kconfig
+++ b/arch/powerpc/platforms/powernv/Kconfig
@@ -11,12 +11,12 @@ config PPC_POWERNV
        select PPC_UDBG_16550
        select PPC_SCOM
        select ARCH_RANDOM
-       select CPU_FREQ
-       select CPU_FREQ_GOV_PERFORMANCE
-       select CPU_FREQ_GOV_POWERSAVE
-       select CPU_FREQ_GOV_USERSPACE
-       select CPU_FREQ_GOV_ONDEMAND
-       select CPU_FREQ_GOV_CONSERVATIVE
+       select CPU_FREQ if !SCHED_POWER
+       select CPU_FREQ_GOV_PERFORMANCE if CPU_FREQ
+       select CPU_FREQ_GOV_POWERSAVE if CPU_FREQ
+       select CPU_FREQ_GOV_USERSPACE if CPU_FREQ
+       select CPU_FREQ_GOV_ONDEMAND if CPU_FREQ
+       select CPU_FREQ_GOV_CONSERVATIVE if CPU_FREQ
        select PPC_DOORBELL
        default y
 
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index ffe350f..8976fd6 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -2,6 +2,7 @@ menu "CPU Frequency scaling"
 
 config CPU_FREQ
        bool "CPU Frequency scaling"
+       depends on !SCHED_POWER
        help
          CPU Frequency scaling allows you to change the clock speed of 
          CPUs on the fly. This is a nice method to save power, because 
@@ -12,6 +13,7 @@ config CPU_FREQ
          (see below) after boot, or use a userspace tool.
 
          For details, take a look at <file:Documentation/cpu-freq>.
+         This feature will turn off if power aware scheduling is enabled.
 
          If in doubt, say N.
 
diff --git a/drivers/cpuidle/Kconfig b/drivers/cpuidle/Kconfig
index 32748c3..2c4ac79 100644
--- a/drivers/cpuidle/Kconfig
+++ b/drivers/cpuidle/Kconfig
@@ -3,6 +3,7 @@ menu "CPU Idle"
 config CPU_IDLE
        bool "CPU idle PM support"
        default y if ACPI || PPC_PSERIES
+       depends on !SCHED_POWER
        select CPU_IDLE_GOV_LADDER if (!NO_HZ && !NO_HZ_IDLE)
        select CPU_IDLE_GOV_MENU if (NO_HZ || NO_HZ_IDLE)
        help
@@ -11,6 +12,7 @@ config CPU_IDLE
          governors that can be swapped during runtime.
 
          If you're using an ACPI-enabled platform, you should say Y here.
+         This feature will turn off if power aware scheduling is enabled.
 
 if CPU_IDLE
 
diff --git a/kernel/Kconfig.sched b/kernel/Kconfig.sched
new file mode 100644
index 0000000..374454c
--- /dev/null
+++ b/kernel/Kconfig.sched
@@ -0,0 +1,11 @@
+menu "Power Aware Scheduling"
+
+config SCHED_POWER
+        bool "Power Aware Scheduler"
+        default n
+        help
+           Select this to enable the new power aware scheduler.
+endmenu
+
+
+

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to