lkml.org 
[lkml]   [2019]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 05/18] rcu/nocb: Check for deferred nocb wakeups before nohz_full early exit
    Date
    In theory, a timer is used to defer wakeups of no-CBs grace-period
    kthreads when the wakeup cannot be done safely directly from the
    call_rcu(). In practice, the one-jiffy delay is not always consistent
    with timely callback invocation under heavy call_rcu() loads. Therefore,
    there are a number of checks for a pending deferred wakeup, including
    from the scheduling-clock interrupt. Unfortunately, this check follows
    the rcu_nohz_full_cpu() early exit, which renders it useless on such CPUs.

    This commit therefore moves the check for the pending deferred no-CB
    wakeup to precede the rcu_nohz_full_cpu() early exit.

    Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
    ---
    kernel/rcu/tree.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
    index ea479d81da7f..f1a25d17e3a0 100644
    --- a/kernel/rcu/tree.c
    +++ b/kernel/rcu/tree.c
    @@ -2739,6 +2739,10 @@ static int rcu_pending(void)
    /* Check for CPU stalls, if enabled. */
    check_cpu_stall(rdp);

    + /* Does this CPU need a deferred NOCB wakeup? */
    + if (rcu_nocb_need_deferred_wakeup(rdp))
    + return 1;
    +
    /* Is this CPU a NO_HZ_FULL CPU that should ignore RCU? */
    if (rcu_nohz_full_cpu())
    return 0;
    @@ -2763,10 +2767,6 @@ static int rcu_pending(void)
    unlikely(READ_ONCE(rdp->gpwrap))) /* outside lock */
    return 1;

    - /* Does this CPU need a deferred NOCB wakeup? */
    - if (rcu_nocb_need_deferred_wakeup(rdp))
    - return 1;
    -
    /* nothing to do */
    return 0;
    }
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-08-02 01:09    [W:4.047 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site