This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCHv3] powerpc: Spinlock optimization and cleanup


"Paul E. Murphy" <murphyp@linux.vnet.ibm.com> writes:

> Changes from V2:
>
> * Cleanup whitespace
> * Apply similar changes to pthread_mutex_trylock
> * Remove initial test as it doesn't impact P8 performance,
> and degrades P7 performance.
> * Remove out of date comments, someone cleaned up the
> declarations in the meantime.
>
> I'm still working on getting the benchmark utility in shape
> for initial submission.
>
> ---8<---
> This patch optimizes powerpc spinlock implementation by:
>
> * Use the correct EH hint bit on the larx for supported ISA.  For lock
>   acquisition, the thread that acquired the lock with a successful stcx
>   does not want to give away the write ownership on the cacheline.  The
>   idea is to make the load reservation "sticky" about retaining write
>   authority to the line.  That way, the store that must inevitably come
>   to release the lock can succeed quickly and not contend with other
>   threads issuing lwarx.  If another thread does a store to the line
>   (false sharing), the winning thread must give up write authority to
>   the proper value of EH for the larx for a lock acquisition is 1.
>
> * Increase contented lock performance by up to 40%, and no measurable
>   impact on uncontended locks on P8.
>
> Thanks to Adhemerval Zanella who did most of the work.  I've run some
> tests, and addressed some minor feedback.
>
> 2015-10-28  Adhemeval Zanella  <azanella@linux.vnet.ibm.com>
> 	    Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
>
> 	* sysdeps/powerpc/nptl/pthread_spin_lock.c (pthread_spin_lock):
> 	Add lwarx hint, and use macro for acquire instruction.
> 	* sysdeps/powerpc/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
> 	Likewise.
> 	* sysdep/unix/sysv/linux/powerpc/pthread_spin_unlock.c: Move to ...
> 	* sysdeps/powerpc/nptl/pthread_spin_unlock.c: ... here, and
> 	update to use new atomic macros.

LGTM.

I'm pushing it.

Thanks!

-- 
Tulio Magno


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]