Re: [PATCH v4 -rcu 0/4] Maintain the length of each segment in the segcblist

From: Paul E. McKenney
Date: Tue Aug 25 2020 - 15:58:07 EST


On Mon, Aug 24, 2020 at 10:48:38PM -0400, Joel Fernandes (Google) wrote:
> This is required for several usecases identified. One of them being tracing how
> the segmented callback list changes. Tracing this has identified issues in RCU
> code in the past. The trace patch is the last one in this series.

Thank you for doing this! Another use case is of course more accurately
determining whether a given CPU's large pile of callbacks can be best
served by making grace periods go faster, invoking callbacks more
vigorously, or both. It should also be possible to simplify some of
the callback handling a bit, given that some of the unnatural acts are
due to there having been no per-batch counts.

Thanx, Paul

> Passes 30 minutes of TREE01, TREE03, TREE07. Testing of other TREE configs is
> in progress.
>
> Patches are based on -rcu commit:
> 4f43de2a419a ("Merge branch 'lkmm-dev.2020.08.24a' into HEAD")
>
> Revision history:
> v4: Restructured rcu_do_batch() and segcblist merging to avoid issues.
> Fixed minor nit from Davidlohr.
> v1->v3: minor nits.
> (https://lore.kernel.org/lkml/20200719034210.2382053-1-joel@xxxxxxxxxxxxxxxxx/)
>
> Joel Fernandes (Google) (4):
> rcu/segcblist: Do not depend on rcl->len to store the segcb len during
> merge
> rcu/tree: Make rcu_do_batch count how many callbacks were executed
> rcu/segcblist: Add counters to segcblist datastructure
> rcu/trace: Add tracing for how segcb list changes
>
> include/linux/rcu_segcblist.h | 2 +
> include/trace/events/rcu.h | 25 +++++++
> kernel/rcu/rcu_segcblist.c | 119 ++++++++++++++++++++++++++++++++--
> kernel/rcu/rcu_segcblist.h | 8 +++
> kernel/rcu/tree.c | 32 +++++++--
> 5 files changed, 175 insertions(+), 11 deletions(-)
>
> --
> 2.28.0.297.g1956fa8f8d-goog
>