1. 14 Jul, 2023 1 commit
    • Paul E. McKenney's avatar
      rcu-tasks: Treat only synchronous grace periods urgently · d119357d
      Paul E. McKenney authored
      The performance requirements on RCU Tasks, and in particular on RCU
      Tasks Trace, have evolved over time as the workloads have evolved.
      The current implementation is designed to provide low grace-period
      latencies, and also to accommodate short-duration floods of callbacks.
      
      However, current workloads can also provide a constant background
      callback-queuing rate of a few hundred call_rcu_tasks_trace() invocations
      per second.  This results in continuous back-to-back RCU Tasks Trace
      grace periods, which in turn can consume the better part of 10% of a CPU.
      One could take the attitude that there are several tens of other CPUs on
      the systems running such workloads, but energy efficiency is a thing.
      On these systems, although asynchronous grace-period requests happen
      every few milliseconds, synchronous grace-period requests are quite rare.
      
      This commit therefore arrranges for grace periods to be initiated
      immediately in response to calls to synchronize_rcu_tasks*() and
      also to calls to synchronize_rcu_mult() that are passed one of the
      call_rcu_tasks*() functions.  These are recognized by the tell-tale
      wakeme_after_rcu callback function.
      
      In other cases, callbacks are gathered up for up to about 250 milliseconds
      before a grace period is initiated.  This results in more than an order of
      magnitude reduction in RCU Tasks Trace grace periods, with corresponding
      reduction in consumption of CPU time.
      Reported-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Reported-by: default avatarMartin KaFai Lau <kafai@fb.com>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      d119357d
  2. 09 Jul, 2023 10 commits
  3. 08 Jul, 2023 29 commits