Skip to content

v2 Improvements to RT response on big systems and expedited functions

Paul E. McKenney lkml 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest23 patches 0 repliesNew

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/23rcu: Move RCU grace-period initialization into a kthreadkernel/rcutree.c kernel/rcutree.h+129 -640 replies
2/23rcu: Prevent initialization-time quiescent-state racekernel/rcutree.c+0 -140 replies
3/23rcu: Allow RCU grace-period initialization to be preemptedkernel/rcutree.c+11 -150 replies
4/23rcu: Move RCU grace-period cleanup into kthreadkernel/rcutree.c+62 -500 replies
5/23rcu: Allow RCU grace-period cleanup to be preemptedkernel/rcutree.c+7 -80 replies
6/23rcu: Break up rcu_gp_kthread() into subfunctionskernel/rcutree.c+135 -1150 replies
7/23rcu: Prevent offline CPUs from executing RCU core codekernel/rcutree.c+2 -00 replies
8/23rcu: Provide OOM handler to motivate lazy RCU callbackskernel/rcutree.h kernel/rcutree_plugin.h+87 -10 replies
9/23rcu: Segregate rcu_state fields to improve cache localitykernel/rcutree.h+2 -10 replies
10/23rcu: Move quiescent-state forcing into kthreadkernel/rcutree.c kernel/rcutree.h kernel/rcutree_plugin.h+82 -1380 replies
11/23rcu: Allow RCU quiescent-state forcing to be preemptedkernel/rcutree.c+1 -00 replies
12/23rcu: Adjust debugfs tracing for kthread-based quiescent-state forcingDocumentation/RCU/trace.txt kernel/rcutree.h kernel/rcutree_trace.c+17 -300 replies
13/23rcu: Prevent force_quiescent_state() memory contentionkernel/rcutree.c kernel/rcutree.h+38 -100 replies
14/23rcu: Control grace-period duration from sysfsDocumentation/kernel-parameters.txt kernel/rcutree.c+33 -30 replies
15/23rcu: Make rcutree module parameters visible in sysfskernel/rcutree.c+4 -40 replies
16/23rcu: Fix day-zero grace-period initialization/cleanup racekernel/rcutree.c+17 -230 replies
17/23rcu: Add random PROVE_RCU_DELAY to grace-period initializationkernel/rcutree.c+5 -00 replies
18/23rcu: Adjust for unconditional ->completed assignmentkernel/rcutree.c+3 -10 replies
19/23rcu: Eliminate signed overflow in synchronize_rcu_expedited()kernel/rcutree_plugin.h+4 -40 replies
20/23rcu: Reduce synchronize_rcu_expedited() latencykernel/rcutree_plugin.h+22 -80 replies
21/23rcu: Simplify quiescent-state detectionkernel/rcutree.c kernel/rcutree.h kernel/rcutree_plugin.h +1 more+16 -270 replies
22/23rcu: Handle unbalanced rcu_node configurations with few CPUskernel/rcutree.c+1 -10 replies
23/23rcu: Shrink RCU based on number of CPUskernel/rcutree.c+2 -10 replies

Reviews trailers per patch

19 of 23 patches have a Reviewed-by or Acked-by.

PatchJosh TriplettDimitri SivanichSasha Levin
1/23R-b
2/23
3/23R-b
4/23R-b
5/23R-b
6/23R-b
7/23R-b
8/23R-b T-b
9/23R-b T-b
10/23
11/23R-b
12/23R-b
13/23R-b
14/23R-b
15/23R-b
16/23R-b
17/23R-b
18/23R-b
19/23R-b
20/23R-b
21/23R-b
22/23
23/23

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v1 thread

Cover letter [PATCH tip/core/rcu 0/23] v2 Improvements to RT response on big systems and expedited functions

Hello!

This patch series contains additional improvements to latency for large systems (beyond those in 3.6), along with improvements to synchronize_rcu_expedited(). It also fixes one race introduced by the latency improvements and another that was there to start with (but made more probable by the latency improvements). These are in a single series due to conflicts that would otherwise occur. The individual patches are as follows:

1-6. Move RCU grace-period initialization and cleanup into a kthread:
1. Move RCU grace-period initialization into kthread.
2. Prevent initialization-time quiescent-state race.
3. Allow RCU grace-period initialization to be preempted.
4. Move RCU grace-period cleanup into kthread.
5. Allow RCU grace-period cleanup to be preempted.
6. Break up rcu_gp_kthread() into subfunctions.
7. Prevent offline CPUs from executing RCU core code.
8. Provide an OOM handler to allow lazy callbacks to be motivated
under memory pressure.
9. Segregate rcu_state fields to improve cache locality
(Courtesy of Dimitri Sivanich).
10-13. Move RCU grace-period forcing into a kthread.
10. Move quiescent-state forcing into kthread.
11. Allow RCU quiescent-state forcing to be preempted.
12. Adjust debugfs tracing for kthread-based quiescent-state
forcing.
13. Prevent force_quiescent_state() memory contention.
14. Control grace-period duration from sysfs.
15. Make rcutree module parameters visible in sysfs.
16. Fix day-zero grace-period initialization/cleanup race.
17. Add random PROVE_RCU_DELAY to provoke initalization races.
18. Adjust for unconditional ->completed assignment.
19. Eliminate signed overflow in synchronize_rcu_expedited().
20. Reduce synchronize_rcu_expedited() latency.
21. Simplify quiescent-state detection.
22. Correctly handle reconfiguring to larger leaf fanout in the
case of CONFIG_RCU_FANOUT_EXACT=y. (New in this posting.)
23. Shrink RCU when there is a smaller number of CPUs than the
kernel was built for (NR_CPUS < nr_cpu_ids) even when the leaf fanout did not change. (New in this posting.)

Changes from v1 (https://lkml.org/lkml/2012/8/30/171):

o Incorporated feedback from that posting (thank you Peter, Josh,
and Lai!). This involves some serious rebasing, so the patch numbers do not match v1.

o Added patches #22 and #23 above.

Thanx, Paul

 b/Documentation/RCU/trace.txt         |   43 -
 b/Documentation/kernel-parameters.txt |   11 
 b/kernel/rcutree.c                    |  970 ++++++++++++++++++----------------
 b/kernel/rcutree.h                    |   28 
 b/kernel/rcutree_plugin.h             |  131 +++-
 b/kernel/rcutree_trace.c              |   15 
 6 files changed, 680 insertions(+), 518 deletions(-)