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

From: Waiman Long
Date: Wed Oct 17 2018 - 17:06:50 EST


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.

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, I think. Native qspinlock has a pending path and so even a
slightly contented lock will not cause entry into the slowpath. PV
qspinlock doesn't have a pending path, so there may be a slightly higher
chance of hitting that.

Cheers,
Longman