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(a)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.
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
--
1.9.1
Hi,
It seems that eas-dev is stripping people on cc in certain cases. When I
receive copies of my own replies the topic is prefixed with "[Eas-dev]"
and the cc list only contains eas-dev itself.
Is that a deliberate choice? IMHO it would be better to keep the cc list
in case you want to reply to your own messages.
It also looks like people are removed from to/cc when others reply to
messages received through the list (not in to/cc).
Thanks,
Morten
Hi Juri & Morten,
Thanks for taking the quick call today. Here are some of the patches
from the EAS V3 which I think are outstanding dependencies for
sched-freq to be posted on LKML:
#4 "sched: Make sched entity usage tracking frequency-invariant"
#11 "sched: Make load tracking frequency scale-invariant"
#13 "cpufreq: Architecture specific callback for frequency changes"
Vincent's fix for setting current freq (should be rolled into #13 above):
https://git.linaro.org/people/vincent.guittot/kernel.git/commitdiff/3ac2b6a…
#14 "arm: Frequency invariant scheduler load-tracking support"
Let me know what you think.
Regards,
Mike
FYI, this week ARM opensourced the Workload Automation suite that is useful for EAS evaluation
License is Apache ver 2.0
https://github.com/ARM-software/workload-automation
(see README for details)
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2548782
Hi Amit,
since I've got a backport of EASv3 and I'd like to share this
with all, can you please give me an update about the EAS
backport tree maintenance bits we agreed upon.
Thanks a lot,
- Juri
This event has been changed.
Title: sched-dvfs design discussion
Link to Google HO is in the meeting details. If that doesn't work for
everyone then we can use some teleconf method.
The main purpose of the call is to discuss:
1) locking issues around get_cpu_usage
2) the polling nature of the current governor code and its implications
3) designing for the non-blocking DVFS case and for unification of task
placement and frequency selection decisions
When: Wed 2015-03-18 9:30am - 10:30am Pacific Time (changed)
Video call: https://plus.google.com/hangouts/_/linaro.org/sched-dvfs
<https://plus.google.com/hangouts/_/linaro.org/sched-dvfs?hceid=bWlrZS50dXJx…>
Calendar: Mike Turquette
Who:
* Mike Turquette - organizer
* Morten Rasmussen
* Amit Kucheria
* eas-dev(a)lists.linaro.org
* Vincent Guittot
* Juri Lelli
* Daniel Lezcano
* dietmar.eggemann(a)arm.com
Event details:
https://www.google.com/calendar/event?action=VIEW&eid=a2s1amRldW4zY28yMTdlY…
Invitation from Google Calendar: https://www.google.com/calendar/
You are receiving this courtesy email at the account
eas-dev(a)lists.linaro.org because you are an attendee of this event.
To stop receiving future updates for this event, decline this event.
Alternatively you can sign up for a Google account at
https://www.google.com/calendar/ and control your notification settings for
your entire calendar.
Hi all,
as agreed with Mike, I'm posting here his sched-dvfs patchset [1] plus
my EAS bindings to make it use the energy model. This is meant to re-start
discussion on the attempt to drive dvfs directly from the scheduler.
This patchset is based on 4.0-rc2 + EASv3 [2].
Mike is already working on a slightly different, more "reactive", approach.
The way we can use EAS infrastructure shouldn't change much anyway, so this
works also as a first example of such thing. The core of my little delta
resides in the possibility to read the energy tables to get freq and uarch
invariance in the new governor (4/6) and the use of get_cpu_usage() to
get the utilization signal from the scheduler (that I squashed in 02/06
together with some little fixes).
Best,
- Juri
[1] https://lkml.org/lkml/2014/10/22/21
[2] https://lkml.org/lkml/2015/2/4/537
Juri Lelli (3):
sched/energy_model: use EAS energy model
sched/energy_model: bound kthreads to run on related_cpus
sched/energy_model: fix spurious kicks
Michael Turquette (1):
sched: cfs: cpu frequency scaling based on task placement
Mike Turquette (2):
cpufreq: add per-governor private data
sched: energy_model: simple cpu frequency scaling policy
drivers/cpufreq/Kconfig | 21 +++
include/linux/cpufreq.h | 6 +
kernel/sched/Makefile | 1 +
kernel/sched/energy_model.c | 364 ++++++++++++++++++++++++++++++++++++++++++++
kernel/sched/fair.c | 51 ++++++-
kernel/sched/sched.h | 5 +
6 files changed, 441 insertions(+), 7 deletions(-)
create mode 100644 kernel/sched/energy_model.c
--
2.2.2
You have been invited to the following event.
Title: sched-dvfs design discussion
Link to Google HO is in the meeting details. If that doesn't work for
everyone then we can use some teleconf method.
The main purpose of the call is to discuss:
1) locking issues around get_cpu_usage
2) the polling nature of the current governor code and its implications
3) designing for the non-blocking DVFS case and for unification of task
placement and frequency selection decisions
When: Wed 2015-03-18 7:30am - 8:30am Pacific Time
Video call: https://plus.google.com/hangouts/_/linaro.org/sched-dvfs
<https://plus.google.com/hangouts/_/linaro.org/sched-dvfs?hceid=bWlrZS50dXJx…>
Calendar: Mike Turquette
Who:
* Mike Turquette - organizer
* Morten Rasmussen
* Amit Kucheria
* eas-dev(a)lists.linaro.org
* Vincent Guittot
* Juri Lelli
* Daniel Lezcano
* dietmar.eggemann(a)arm.com
Event details:
https://www.google.com/calendar/event?action=VIEW&eid=a2s1amRldW4zY28yMTdlY…
Invitation from Google Calendar: https://www.google.com/calendar/
You are receiving this courtesy email at the account
eas-dev(a)lists.linaro.org because you are an attendee of this event.
To stop receiving future updates for this event, decline this event.
Alternatively you can sign up for a Google account at
https://www.google.com/calendar/ and control your notification settings for
your entire calendar.