Re: [PATCH v2] locking/pvqspinlock: Relax cmpxchg's to improve performance on some archs

From: Peter Zijlstra
Date: Tue Jan 03 2017 - 11:43:12 EST


On Sun, Dec 25, 2016 at 03:26:01PM -0500, Waiman Long wrote:
> A number of cmpxchg calls in qspinlock_paravirt.h were replaced by more
> relaxed versions to improve performance on architectures that use LL/SC.

Claim without numbers ;-)

>
> All the locking related cmpxchg's are replaced with the _acquire
> variants:
> - pv_queued_spin_steal_lock()
> - trylock_clear_pending()

So these seem to make sense in that they're in 'fast' paths..

> The cmpxchg's related to hashing are replaced by either by the _release
> or the _relaxed variants. See the inline comment for details.


But these not so much, we're going to put the vcpu to sleep, why does it
make sense to 'optimize' the wait/kick stuff?