Hi,
On 16/04/15 06:29, Michael Turquette wrote:
This series implements an event-driven cpufreq governor that scales cpu frequency as a function of cfs runqueue utilization. The intent of this RFC is to get some discussion going about how the scheduler can become the policy engine for selecting cpu frequency, what limitations exist and what design do we want to take to get to a solution.
This series depends on having frequency-invariant representations for load. This requires Vincent's recently merged cpu capacity rework patches, as well as two patches posted by Morten in his energy aware scheduling v3 series. The latter two patches are included in this series for posterity, but discussion around them probably belongs in the v3 eas series or the forthcoming v4 series.
Thanks to Juri Lelli juri.lelli@arm.com for contributing to the development of the governor.
A git branch with these patches can be pulled from here: https://git.linaro.org/people/mike.turquette/linux.git sched-freq
Smoke testing has been done on an OMAP4 Pandaboard and an Exynos 5800 Chromebook2.
---8<---
eas-dev,
Please let me know what you think of this series, including code as well as cover letter and commitlog text. I was not able to finish the irq_work additions to the governor in time for me to submit this tonight (these changes remove the periodic behavior of calling cap_gov_kick_thread from run_rebalance_domains). I'll focus on the irq_work stuff tomorrow and post an addenedum to this series asap.
IMHO, we should try to have also this bit for the posting on LKML. I would like to receive early feedback on it, so that we can also ask for advices on alternative solutions if the thing is not going to fly :).
Thanks for this post Mike.
Best,
- Juri
I have not done any benchmark testing with this series. That is also on my todo list for this week and any help there would be appreciated.
Freedom & Howard, if you are bored and feel like measuring power across some benchmarks on your non-buggy EVBs then please do. I can only measure power on the A53s right now which limits me to a single cluster with two cores.
Regards, Mike
Michael Turquette (4): sched: sched feature for cpu frequency selection cpufreq: add per-governor private data sched: export get_cpu_usage in sched.h sched: cap_gov: PELT-based cpu frequency scaling
Morten Rasmussen (2): cpufreq: Architecture specific callback for frequency changes arm: Frequency invariant scheduler load-tracking support
arch/arm/include/asm/topology.h | 4 + arch/arm/kernel/topology.c | 41 +++++ drivers/cpufreq/Kconfig | 22 +++ drivers/cpufreq/cpufreq.c | 13 +- include/linux/cpufreq.h | 6 + kernel/sched/Makefile | 1 + kernel/sched/cap_gov.c | 361 ++++++++++++++++++++++++++++++++++++++++ kernel/sched/fair.c | 26 ++- kernel/sched/features.h | 6 + kernel/sched/sched.h | 10 ++ 10 files changed, 488 insertions(+), 2 deletions(-) create mode 100644 kernel/sched/cap_gov.c