]> git.ipfire.org Git - thirdparty/glibc.git/commit
powerpc: Optimize lock elision for pthread_mutex_t
authorPaul Murphy <murphyp@linux.vnet.ibm.com>
Thu, 3 Sep 2015 18:40:21 +0000 (13:40 -0500)
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Thu, 15 Oct 2015 21:56:10 +0000 (18:56 -0300)
commitfadd2ad9cc36115440d50b0eae9299e65988917d
tree98e5446434a66f7bd64cb1a0f31aac778ea31413
parente5e6bea22a2939fe7c415a375992f3ca19f9ff2e
powerpc: Optimize lock elision for pthread_mutex_t

With TLE enabled, the adapt count variable update incurs
an 8% overhead before entering the critical section of an
elided mutex.

Instead, if it is done right after leaving the critical
section, this serialization can be avoided.

This alters the existing behavior of __lll_trylock_elision
as it will only decrement the adapt_count if it successfully
acquires the lock.

* sysdeps/unix/sysv/linux/powerpc/elision-lock.c
(__lll_lock_elision): Remove adapt_count decrement...
* sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
(__lll_trylock_elision): Likewise.
* sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
(__lll_unlock_elision): ... to here. And utilize
new adapt_count parameter.
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
(__lll_unlock_elision): Update to include adapt_count
parameter.
(lll_unlock_elision): Pass pointer to adapt_count
variable.
ChangeLog
sysdeps/unix/sysv/linux/powerpc/elision-lock.c
sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
sysdeps/unix/sysv/linux/powerpc/lowlevellock.h