Hi Alex,
In 4.1-rc1, several patches (see 36ee28e4 onwards) related to cpu
capacity consolidation were merged.
It would be a good idea to refresh the eas-backport tree so that these
patches are cherry-picked directly from mainline into
stable/sched-upstream branch and their equivalent versions in
stable/sched-core are removed.
Regards,
Amit
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
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(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. Extensive benchmarking and regression testing has not yet been
done. Before sinking too much time into extensive testing I'd like to get
feedback on the general design.
Michael Turquette (3):
sched: sched feature for cpu frequency selection
sched: export get_cpu_usage & capacity_orig_of
sched: cpufreq_sched_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_sched_cfs.c | 314 +++++++++++++++++++++++++++++++++++++++
kernel/sched/fair.c | 20 ++-
kernel/sched/features.h | 6 +
kernel/sched/sched.h | 9 ++
10 files changed, 450 insertions(+), 4 deletions(-)
create mode 100644 kernel/sched/cpufreq_sched_cfs.c
--
1.9.1
Hi Alex,
Robin asked me to share with you the patches that I found having conflicts on
the Juno LSK integration branch. It would be helpful to know your feelings
about them (are they fundamental? can they be dropped? etc.). The aim here
is to understand if we can eventually come up with a sched-upstream branch
that is more easily applicable on top of the Juno integration branch:
http://git.linaro.org/landing-teams/working/arm/kernel.git integration-lsk-3.10-juno-android
I'll try to give you a list of patches that I had to remove or revert from
sched-upstream when trying to build a branch that supports Juno and has EASv3
on top (so that we could test it on Android). I'll also add comments about
patches that I'm more familiar with. Please be aware that I had to come up
with this in quite a hurry, as we wanted to show EAS results coming from
Juno at the last Connect. This means that the rationale for deciding to keep
or drop a patch in the branch was merely "drop everything that seems to have
non trivial conflicts". At the end I was fairly happy with the behaviours,
but this doesn't necessarily mean that we still not need some of what I
dropped.
080bdd1 exit.c: unexport __set_special_pids()
cdba026 ptrace: revert "Prepare to fix racy accesses on task breakpoints"
73bcb2e mm: remove free_area_cache
802d8c2 ptrace/x86: revert "hw_breakpoints: Fix racy access to ptrace breakpoints"
6472001 ptrace/arm: revert "hw_breakpoints: Fix racy access to ptrace breakpoints"
f0a709a sched: Add new scheduler syscalls to support an extended scheduling parameters ABI
631db36 sched/core: Fix htmldocs warnings
4f89001 sched: Preserve the nice level over sched_setscheduler() and sched_setparam() calls
c9d415b sched: Fix up scheduler syscall LTP fails
0525ffc sched: Fix up attr::sched_priority warning
b62aed3 sched: Move SCHED_RESET_ON_FORK into attr::sched_flags
7d214b1 sched: Fix __sched_setscheduler() nice test
9db9c75 sched: Fix information leak in sys_sched_getattr()
10d4f89 sched: Add 'flags' argument to sched_{set,get}attr() syscalls
as this preceding set comes with the (or are subsequent fixes of)
the SCHED_DEADLINE patchset, I think we could just ignore them for now
02fee98 ARM: introduce common set_auxcr/get_auxcr functions
6a4f9e7 sched: Implement task_nice() as static inline function
this preceding patch is maybe not a crucial fix?
6261e04 sched: Adjust p->sched_reset_on_fork when nothing else changes
33e8006 sched: Replace hardcoding of -20 and 19 with MIN_NICE and MAX_NICE
this two preceding patches depend on 6a4f9e7
15bfe13 arm64: use common reboot infrastructure
52cefcb arm64: Fix definition of arm_pm_restart to match the declaration
8c7b4f7 arm64: kernel: add CPU idle call
e1bf4b0 time: Change the return type of clockevents_notify() to integer
ff5e6b8 tracing: Do not do anything special with tracepoint_string when tracing is disabled
2e576ce tracepoint: add generic tracepoint definitions for IPI tracing
5174675 ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
128647d ARM: SMP: basic IPI triggered completion support
eccd85f ARM: add IPI tracepoints
5be433d arm64: enable generic clockevent broadcast
e947689 arm64: Support arch_irq_work_raise() via self IPIs
5716acb ARM64: add IPI tracepoints
I then had to revert the following patches.
db9cfbf sched/idle: Optimize try-to-wake-up IPI
50299a0 sched/idle: Avoid spurious wakeup IPIs
7f219d1 sched, trace: Add a tracepoint for IPI-less remote wakeups
95ec016 sched/idle: Simplify wake_up_idle_cpu()
And finally apply the attached patches to make the branch compile.
Please don't hesitate to ask for more information, as I understand
that all this might be quite confusing :).
Best,
- Juri
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