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/

Reply via email to