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. These functions are made of many conditions and details that can be heavyweight: 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. There is still a last bit of work to do (add static keys on tick_dependency APIs) but it's overall complete. git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git timers/core-v4 HEAD: 2e9d80bececd2cb49aeddaf61660de76730559f9 Thanks, Frederic --- Frederic Weisbecker (10): nohz: Remove idle task special case nohz: Restart nohz full tick from irq exit nohz: Move tick_nohz_restart_sched_tick() above its users nohz: Remove useless argument on tick_nohz_task_switch() nohz: New tick dependency mask perf: Migrate perf to use new tick dependency mask model 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 nohz: Remove task switch obsolete tick dependency check include/linux/perf_event.h | 6 -- include/linux/posix-timers.h | 3 - include/linux/sched.h | 3 - include/linux/tick.h | 36 ++++--- kernel/events/core.c | 19 +--- kernel/sched/clock.c | 5 + kernel/sched/core.c | 14 +-- kernel/sched/sched.h | 56 ++++++++--- kernel/time/posix-cpu-timers.c | 92 +++++++++--------- kernel/time/tick-sched.c | 215 ++++++++++++++++++++++++++--------------- kernel/time/tick-sched.h | 1 + 11 files changed, 265 insertions(+), 185 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/