[GIT PULL] nohz: Tick dependency mask
From: Frederic Weisbecker
Date: Sun Feb 14 2016 - 20:08:50 EST
Ingo, Thomas,
Please pull the timers/core-v8 branch that can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
timers/core-v8
HEAD: 0378c8b4f541116843c5d19b403bb6145fa1030e
---
Currently in nohz full configs, the tick dependency is checked
asynchronously by nohz code from interrupt and context switch for each
concerned subsystem with a set of function provided by these. Such
functions are made of many conditions and details that can be heavyweight
as they are called on fastpath: sched_can_stop_tick(),
posix_cpu_timer_can_stop_tick(), perf_event_can_stop_tick()...
Thomas suggested a few month ago to make that tick dependency check
synchronous. Instead of checking subsystems details from each interrupt
to guess if the tick can be stopped, every subsystem that may have a tick
dependency should set itself a flag specifying the state of that
dependency. This way we can verify if we can stop the tick with a single
lightweight mask check on fast path.
This conversion from a pull to a push model to implement tick dependency
is the core feature of this patchset that is split into:
* Nohz wide kick simplification
* Improve nohz tracing
* Introduce tick dependency mask
* Migrate scheduler, posix timers, perf events and sched clock tick
dependencies to the tick dependency mask.
Thanks,
Frederic
---
Frederic Weisbecker (9):
atomic: Export fetch_or()
nohz: Implement wide kick on top of irq work
nohz: New tick dependency mask
nohz: Use enum code for tick stop failure tracing message
perf: Migrate perf to use new tick dependency mask model
sched: Account rr tasks
sched: Migrate sched to use new tick dependency mask model
posix-cpu-timers: Migrate to use new tick dependency mask model
sched-clock: Migrate to use new tick dependency mask model
include/linux/atomic.h | 21 +++++
include/linux/perf_event.h | 6 --
include/linux/posix-timers.h | 3 -
include/linux/sched.h | 11 ++-
include/linux/tick.h | 97 ++++++++++++++++++++++-
include/trace/events/timer.h | 36 +++++++--
kernel/events/core.c | 65 +++++++++++----
kernel/sched/clock.c | 5 ++
kernel/sched/core.c | 49 +++++-------
kernel/sched/rt.c | 16 ++++
kernel/sched/sched.h | 48 +++++++----
kernel/time/posix-cpu-timers.c | 52 +++---------
kernel/time/tick-sched.c | 175 ++++++++++++++++++++++++++++++++---------
kernel/time/tick-sched.h | 1 +
14 files changed, 424 insertions(+), 161 deletions(-)