Energy Aware Scheduling [EAS]
EAS is a set of extensions to the Linux kernel that introduce energy model based decision making for task scheduling and power-performance control. EAS aims to make power-performance control more centralised with the scheduler being the primary driver for power-performance decisions. This contrasts with the current situation where the scheduler, cpufreq and cpuidle tend to step on each other’s toes. The goal is to simplify power-performance management with a scheduler-driven policy and a small set of well-defined tunables. EAS aims to provide tools that assist with energy model creation, qualification, the quantification of energy usage per workload and power-performance tuning.
EAS is the culmination of a lot of discussion in the past years on LKML and in various conferences and resulting work. The following URLs should help understand the route that has been taken to get this far [ordered most recent first]:
Energy Aware Scheduling workshop @ Kernel Summit 2014
Energy-aware Scheduling and CPU Power Management micro-conference @ LPC 2014
Power-aware Scheduling workshop @ Kernel Summit 2013
Power-efficient Scheduling micro-conference @ LPC 2013
Work on EAS is divided into the following broad tracks:
- Introduction of a CPU energy model.
- Application of the energy model for load balance decisions.
- Application of the energy model for power-performance control.
- Essential miscellaneous modifications to the CFS scheduler to accommodate the above.
- Modifications to cpufreq to enable direct DVFS OPP transitions under scheduler control.
- A simple scheduler driven policy for DVFS with a clean set of tunables that enable a range of power/performance options.
- Modifications to make the scheduler aware of all the idle states supported by CPUs in the system including the cost implications of entering and exiting those states as well as current idle state tracking.
- Modify cpuidle and/or the scheduler to remove any unnecessary redundant idle state specific data.
The idlestat tool - https://wiki-archive.linaro.org/WorkingGroups/PowerManagement/Resources/Tools/Idlestat
The rtapp based workload generator - https://wiki-archive.linaro.org/WorkingGroups/PowerManagement/Resources/Tools/WorkloadGen
The EAS kernel work is contained in the following git repository:
This is a publically available Linux Stable Kernel v3.10 based repository with all key EAS patches back-ported to it. This repository will be the focal point for all development aiming to evidence any new features and qualify them properly with Android on available silicon implementations before those features are deemed adequate for publishing to LKML.
TODO: Explanation of topic branch structure and working methodology
EAS mailing list
Relevant discussions for EAS development will be on the following publicly accessible mailing list:
This list is for developers for sharing information, asking questions, providing updates, getting inspiration. Anyone working on EAS or wanting to know what is going on should subscribe.
Patches https://wiki-archive.linaro.org/WorkingGroups/PowerManagement/Resources/EAS/Patches : List of submitted patches
Tests and scenario (restricted)
Minutes of meetings (restricted)