[PATCH RFC v2 0/4] scheduler-driven cpu frequency selection

From: Michael Turquette
Date: Mon May 11 2015 - 22:14:32 EST

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.

V2 changes the interface exposed from the governor to cfs. Instead of being a
"pull" model where get_cpu_usage is used to fetch the utilization, that
information is pushed into the governor. After making this change it becomes
clear that selecting a new capacity target for a cpu can be done entirely
within fair.c without any knowledge of cpufreq or the hardware. I didn't go
that far in this version of the series, but it is something to consider. Such a
change would mean that we do not pass in a utilization value but instead a
capacity target.

RFC v1 from May 4, 2015:

Old, original idea from October/November of 2014:

This series depends on having frequency-invariant representations for load.
This requires Vincent's recently merged cpu capacity rework patches, as well as
a new patch from Morten included here. Morten's patch will likely make an
appearance in his energy aware scheduling v4 series.

Thanks to Juri Lelli <juri.lelli@xxxxxxx> 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. Extensive benchmarking and regression testing has not yet been

Michael Turquette (3):
sched: sched feature for cpu frequency selection
sched: expose capacity_of in sched.h
sched: cpufreq_cfs: pelt-based cpu frequency scaling

Morten Rasmussen (1):
arm: Frequency invariant scheduler load-tracking support

arch/arm/include/asm/topology.h | 7 +
arch/arm/kernel/smp.c | 53 ++++++-
arch/arm/kernel/topology.c | 17 ++
drivers/cpufreq/Kconfig | 24 +++
include/linux/cpufreq.h | 3 +
kernel/sched/Makefile | 1 +
kernel/sched/cpufreq_cfs.c | 343 ++++++++++++++++++++++++++++++++++++++++
kernel/sched/fair.c | 24 ++-
kernel/sched/features.h | 6 +
kernel/sched/sched.h | 13 ++
10 files changed, 484 insertions(+), 7 deletions(-)
create mode 100644 kernel/sched/cpufreq_cfs.c


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