Re: [PATCH 1/4] staging: lustre: obdclass: change spinlock of key to rwlock

From: Dilger, Andreas
Date: Thu May 03 2018 - 20:12:02 EST


On May 3, 2018, at 07:50, David Laight <David.Laight@xxxxxxxxxx> wrote:
>
> From: James Simmons
>> Sent: 02 May 2018 19:22
>> From: Li Xi <lixi@xxxxxxx>
>>
>> Most of the time, keys are never changed. So rwlock might be
>> better for the concurrency of key read.
>
> OTOH unless there is contention on the spin lock during reads the
> additional cost of a rwlock (probably double that of a spinlock)
> will hurt performance.
>
> ...
>> - spin_lock(&lu_keys_guard);
>> + read_lock(&lu_keys_guard);
>> atomic_inc(&lu_key_initing_cnt);
>> - spin_unlock(&lu_keys_guard);
>> + read_unlock(&lu_keys_guard);
>
> WTF, seems unlikely that you need to hold any kind of lock
> over an atomic_inc().
>
> If this is just ensuring that no code holds the lock then
> it would need to request the write_lock().
> (and would need a comment)

There was a fair amount of benchmarking done for this that shows the
performance is significantly improved with the patch, which can be
seen in the ticket that was referenced in the original commit comment:

https://jira.hpdd.intel.com/browse/LU-6800?focusedCommentId=121776#comment-121776

That said, it might be good to include this information into the
commit comment itself.

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Intel Corporation