• W
    locking/qspinlock_stat: Count instances of nested lock slowpaths · c9bd1fb6
    Waiman Long 提交于
    mainline inclusion
    from mainline-4.20-rc1
    commit 1222109a5363
    category: bugfix
    bugzilla: 13227
    CVE: NA
    
    -------------------------------------------------
    
    Queued spinlock supports up to 4 levels of lock slowpath nesting -
    user context, soft IRQ, hard IRQ and NMI. However, we are not sure how
    often the nesting happens.
    
    So add 3 more per-CPU stat counters to track the number of instances where
    nesting index goes to 1, 2 and 3 respectively.
    
    On a dual-socket 64-core 128-thread Zen server, the following were the
    new stat counter values under different circumstances:
    
             State                         slowpath   index1   index2   index3
             -----                         --------   ------   ------   -------
      After bootup                         1,012,150    82       0        0
      After parallel build + perf-top    125,195,009    82       0        0
    
    So the chance of having more than 2 levels of nesting is extremely low.
    
    [ mingo: Minor changelog edits. ]
    Signed-off-by: NWaiman Long <longman@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Link: http://lkml.kernel.org/r/1539697507-28084-1-git-send-email-longman@redhat.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
    Signed-off-by: NHanjun Guo <guohanjun@huawei.com>
    Signed-off-by: NWei Li <liwei391@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    c9bd1fb6
qspinlock.c 15.2 KB