rcu: Remove SRCU throttling
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 14 Feb 2018 22:20:45 +0000 (14:20 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 21 Feb 2018 00:21:13 +0000 (16:21 -0800)
The code in srcu_gp_end() inserts a delay every 0x3ff grace periods in
order to prevent SRCU grace-period work from consuming an entire CPU
when there is a long sequence of expedited SRCU grace-period requests.
However, all of SRCU's grace-period work is carried out in workqueues,
which are in turn within kthreads, which are automatically throttled as
needed by the scheduler.  In particular, if there is plenty of idle time,
there is no point in throttling.

This commit therefore removes the expedited SRCU grace-period throttling.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/srcutree.c

index f962f4428c39fc03c0a163105c9fee7b90d91f0b..e2796f79a5979d1cf108d49bacfac28b5dbb4fd5 100644 (file)
@@ -596,9 +596,7 @@ static void srcu_gp_end(struct srcu_struct *sp)
            ULONG_CMP_LT(gpseq, sp->srcu_gp_seq_needed)) {
                srcu_gp_start(sp);
                spin_unlock_irq_rcu_node(sp);
-               /* Throttle expedited grace periods: Should be rare! */
-               srcu_reschedule(sp, rcu_seq_ctr(gpseq) & 0x3ff
-                                   ? 0 : SRCU_INTERVAL);
+               srcu_reschedule(sp, 0);
        } else {
                spin_unlock_irq_rcu_node(sp);
        }