Re: [PATCH 1/2] locking/qspinlock_stat: Count instances of nested lock slowpaths

From: Peter Zijlstra
Date: Thu Oct 18 2018 - 05:05:53 EST


On Wed, Oct 17, 2018 at 05:06:46PM -0400, Waiman Long wrote:
> On 10/17/2018 03:38 AM, Peter Zijlstra wrote:
> > On Tue, Oct 16, 2018 at 09:45:06AM -0400, Waiman Long wrote:
> >> 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 3 more per-cpu stat counters are added
> >> 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 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
> > Would probably be good to check a network workload.
>
> Do you have any suggestion of what network workload? I usually don't
> test on network related workload.

Some netperf runs? Be sure to ask the network folks for 2 systems with
at least 10GBe or something.

> The only way to have a nesting level of 3 is when there is lock
> contention in user context, soft IRQ and hard IRQ simultaneously which
> is very rare,

network should be able to trigger a lot of softirq and hardirqs, which
is why I wondered if it could hit significant 3 levels.

But yeah, I played around a bit, and couldn't get my index* numbers to
move at all. I suppose we've gotten really good at avoiding lock
contention for all the benchmarks we care about :-)