Skip to content

Expedited grace period changes for 4.3

Paul E. McKenney lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest19 patches 16 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/19rcu: Stop disabling CPU hotplug in synchronize_rcu_expedited()kernel/rcu/tree_plugin.h+2 -230 replies
2/19rcu: Remove CONFIG_RCU_CPU_STALL_INFODocumentation/RCU/stallwarn.txt kernel/rcu/tree.h kernel/rcu/tree_plugin.h +13 more+2 -854 replies
3/19rcu: Switch synchronize_sched_expedited() to stop_one_cpu()kernel/rcu/tree.c kernel/rcu/tree.h+15 -270 replies
4/19rcu: Rework synchronize_sched_expedited() counter handlingkernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+36 -830 replies
5/19rcu: Get rid of synchronize_sched_expedited()'s polling loopkernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+47 -590 replies
6/19rcu: Make expedited GP CPU stoppage asynchronouskernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+25 -150 replies
7/19rcu: Abstract sequence counting from synchronize_sched_expedited()kernel/rcu/tree.c+58 -100 replies
8/19rcu: Make synchronize_rcu_expedited() use sequence-counter schemekernel/rcu/tree_plugin.h+6 -100 replies
9/19rcu: Abstract funnel locking from synchronize_sched_expedited()kernel/rcu/tree.c+47 -330 replies
10/19rcu: Fix synchronize_sched_expedited() type error for "s"kernel/rcu/tree.c+1 -10 replies
11/19rcu: Use funnel locking for synchronize_rcu_expedited()'s polling loopkernel/rcu/tree.c kernel/rcu/tree_plugin.h+18 -330 replies
12/19rcu: 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
13/19rcu: Consolidate last open-coded expedited memory barrierkernel/rcu/tree.c kernel/rcu/tree_plugin.h+1 -20 replies
14/19rcu: Extend expedited funnel locking to rcu_data structurekernel/rcu/tree.c kernel/rcu/tree.h kernel/rcu/tree_trace.c+21 -54 replies
15/19rcu: Add stall warnings to synchronize_sched_expedited()kernel/rcu/tree.c kernel/rcu/tree.h+55 -40 replies
16/19documentation: Describe new expedited stall warningsDocumentation/RCU/stallwarn.txt+17 -00 replies
17/19rcu: Pull out wait_event*() condition into helper functionkernel/rcu/tree.c+21 -50 replies
18/19rcu: Rename RCU_GP_DONE_FQS to RCU_GP_DOING_FQSkernel/rcu/tree.c kernel/rcu/tree.h+2 -20 replies
19/19rcu: Add fastpath bypassing funnel lockingDocumentation/RCU/trace.txt kernel/rcu/tree.c kernel/rcu/tree.h +1 more+29 -298 replies

Reviews trailers per patch

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

Read the v1 thread

Cover letter [PATCH tip/core/rcu 0/19] Expedited grace period changes for 4.3

Hello!

This series contains a series of optimizations for RCU's expedited grace periods that reduce the jitter they induce in other CPUs. There is more work to be done here, but this should introduce a good and sufficient level of instability for 4.3. :-/

1. Stop disabling CPU hotplug in synchronize_rcu_expedited().
Longer term, synchronize_sched_expedited() will get the same treatment.

2. Remove CONFIG_RCU_CPU_STALL_INFO, so that kernels are always
built as if CONFIG_RCU_CPU_STALL_INFO=y. A bit off-topic, but remains in this series due to conflicts.

3. Switch synchronize_sched_expedited() to stop_one_cpu(), courtesy
of Peter Zijlstra.

4. Simplify synchronize_sched_expedited() counter handling.

5. Get rid of synchronize_sched_expedited()'s polling loop in
favor of tree-based funnel locking.

6. Make expedited GP CPU stoppage asynchronous, courtesy of Peter
Zijlstra. This repairs a performance regression in #3.

7. Abstract sequence counting from synchronize_sched_expedited().

8. Make synchronize_rcu_expedited() use sequence-counter scheme.

9. Abstract funnel locking from synchronize_sched_expedited().

10. Fix synchronize_sched_expedited() type error for variable "s".

11. Use funnel locking for synchronize_rcu_expedited()'s polling loop.

12. Apply rcu_seq operations to _rcu_barrier().

13. Consolidate last open-coded expedited memory barrier.

14. Extend expedited funnel locking to rcu_data structure, allowing
full parallel handling of expedited grace periods.

15. Add stall warnings to synchronize_sched_expedited().

16. Document new expedited stall warnings.

17. Pull out wait_event*() condition into helper function.

18. Rename RCU_GP_DONE_FQS to RCU_GP_DOING_FQS.

19. Add fastpath bypassing funnel locking to speed up the common
case where only one expedited grace period happens at a time across the full system.

Thanx, Paul

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

 b/Documentation/RCU/stallwarn.txt                             |   29 
 b/Documentation/RCU/trace.txt                                 |   36 
 b/include/trace/events/rcu.h                                  |    1 
 b/kernel/rcu/tree.c                                           |  625 +++++-----
 b/kernel/rcu/tree.h                                           |   39 
 b/kernel/rcu/tree_plugin.h                                    |  123 -
 b/kernel/rcu/tree_trace.c                                     |   29 
 b/lib/Kconfig.debug                                           |   14 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE01       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02-T     |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE03       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE07       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08       |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08-T     |    1 
 b/tools/testing/selftests/rcutorture/configs/rcu/TREE09       |    1 
 b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt |    1 
 20 files changed, 425 insertions(+), 483 deletions(-)