Skip to content

RFC Rework expedited grace periods

Paul E. McKenney lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest14 patches 7 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/14rcu: Switch synchronize_sched_expedited() to stop_one_cpu()kernel/rcu/tree.c kernel/rcu/tree.h+15 -270 replies
2/14rcu: Rework synchronize_rcu_expedited() counter handlingkernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+36 -830 replies
3/14rcu: Get rid of synchronize_sched_expedited()'s polling loopkernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+47 -590 replies
4/14rcu: Make expedited GP CPU stoppage asynchronouskernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+25 -150 replies
5/14rcu: Abstract sequence counting from synchronize_sched_expedited()kernel/rcu/tree.c+58 -107 replies
6/14rcu: Make synchronize_rcu_expedited() use sequence-counter schemekernel/rcu/tree_plugin.h+6 -100 replies
7/14rcu: Abstract funnel locking from synchronize_sched_expedited()kernel/rcu/tree.c+47 -330 replies
8/14rcu: Fix synchronize_sched_expedited() type error for "s"kernel/rcu/tree.c+1 -10 replies
9/14rcu: Use funnel locking for synchronize_rcu_expedited()'s polling loopkernel/rcu/tree.c kernel/rcu/tree_plugin.h+18 -330 replies
10/14rcu: Apply rcu_seq operations to _rcu_barrier()include/trace/events/rcu.h kernel/rcu/tree.c kernel/rcu/tree.h +1 more+22 -570 replies
11/14rcu: Consolidate last open-coded expedited memory barrierkernel/rcu/tree.c kernel/rcu/tree_plugin.h+1 -20 replies
12/14rcu: Extend expedited funnel locking to rcu_data structurekernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+21 -50 replies
13/14rcu: Add stall warnings to synchronize_sched_expedited()kernel/rcu/tree.c kernel/rcu/tree.h+55 -40 replies
14/14documentation: Describe new expedited stall warningsDocumentation/RCU/stallwarn.txt+17 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH RFC tip/core/rcu 0/14] Rework expedited grace periods

Hello!

This RFC series reworks the handling of expedited grace periods, eliminating the previous use of try_stop_cpus(), improving scalability, and adding an RCU CPU stall-warning capability. This series is as follows:

1. Replace try_stop_cpus() with stop_one_cpu(), courtesy of
Peter Zijlstra.

2. Improve counter handling to more efficiently detect that some
other task has already done the required work.

3. Replace synchronize_sched_expedited()'s polling loop with
funnel locking.

4. Replace stop_one_cpu() with stop_one_cpu_nowait() to avoid the
latency hit from #1 above, also courtesy of Peter Zijlstra.

5. Abstract the counter handling.

6. Apply the newly abstracted counter handling to
synchronize_rcu_expedited().

7. Abstract the funnel locking.

8. Fix a stupid type error in synchronize_sched_expedited().

9. Replace synchronize_rcu_expedited()'s polling with the newly
abstracted funnel locking.

10. Apply the abstracted counter handling to _rcu_barrier().

11. Consolidate the last expedited open-coded expedited memory barrier
into the counter handling.

12. Extend the funnel locking to the rcu_data structure in order to
further increase scalability.

13. Add stall warnings to synchronize_sched_expedited().

14. Document the newly added stall warnings.

Thanx, Paul

------------------------------------------------------------------------

 b/Documentation/RCU/stallwarn.txt |   17 +
 b/include/trace/events/rcu.h      |    1 
 b/kernel/rcu/tree.c               |  581 +++++++++++++++++++-------------------
 b/kernel/rcu/tree.h               |   31 +-
 b/kernel/rcu/tree_plugin.h        |   53 +--
 b/kernel/rcu/tree_trace.c         |   25 -
 6 files changed, 369 insertions(+), 339 deletions(-)