Hi,
This patch set is an initial prototype aiming at the overall power-aware scheduler design proposal that I previously described http://permalink.gmane.org/gmane.linux.kernel/1508480.
The patch set introduces a cpu capacity managing 'power scheduler' which lives by the side of the existing (process) scheduler. Its role is to monitor the system load and decide which cpus that should be available to the process scheduler. Long term the power scheduler is intended to replace the currently distributed uncoordinated power management policies and will interface a unified platform specific power driver obtain power topology information and handle idle and P-states. The power driver interface should be made flexible enough to support multiple platforms including Intel and ARM.
This prototype supports very simple task packing and adds cpufreq wrapper governor that allows the power scheduler to drive P-state selection. The prototype policy is absolutely untuned, but this will be addressed in the future. Scalability improvements, such as avoid iterating over all cpus, will also be addressed in the future.
Thanks, Morten
Morten Rasmussen (9): sched: Introduce power scheduler sched: Redirect update_cpu_power to sched/power.c sched: Make select_idle_sibling() skip cpu with a cpu_power of 1 sched: Make periodic load-balance disregard cpus with a cpu_power of 1 sched: Make idle_balance() skip cpus with a cpu_power of 1 sched: power: add power_domain data structure sched: power: Add power driver interface sched: power: Add initial frequency scaling support to power scheduler sched: power: cpufreq: Initial schedpower cpufreq governor
arch/arm/Kconfig | 2 + drivers/cpufreq/Kconfig | 8 + drivers/cpufreq/Makefile | 1 + drivers/cpufreq/cpufreq_schedpower.c | 119 +++++++++++++ include/linux/sched/power.h | 29 ++++ kernel/Kconfig.power | 3 + kernel/sched/Makefile | 1 + kernel/sched/fair.c | 43 +++-- kernel/sched/power.c | 307 ++++++++++++++++++++++++++++++++++ kernel/sched/sched.h | 24 +++ 10 files changed, 525 insertions(+), 12 deletions(-) create mode 100644 drivers/cpufreq/cpufreq_schedpower.c create mode 100644 include/linux/sched/power.h create mode 100644 kernel/Kconfig.power create mode 100644 kernel/sched/power.c