[PATCH v3] nptl: Optimize trylock for high cache contention workloads (BZ #33704)
Wilco Dijkstra
Wilco.Dijkstra@arm.com
Thu Dec 18 12:59:39 GMT 2025
Hi Sunil,
> Check lock availability before acquisition to reduce cache line
> bouncing. Significantly improves trylock throughput on multi-core
> systems under heavy contention.
LGTM.
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
Cheers,
Wilco
- if (lll_trylock (mutex->__data.__lock) == 0)
+ if (atomic_load_relaxed (&(mutex->__data.__lock)) == 0
+ && lll_trylock (mutex->__data.__lock) == 0)
OK
{
/* Record the ownership. */
mutex->__data.__owner = id;
@@ -60,7 +61,10 @@ ___pthread_mutex_trylock (pthread_mutex_t *mutex)
case PTHREAD_MUTEX_TIMED_NP:
case PTHREAD_MUTEX_ADAPTIVE_NP:
case PTHREAD_MUTEX_ERRORCHECK_NP:
- if (lll_trylock (mutex->__data.__lock) != 0)
+ /* Mutex type is already loaded, lock check overhead should
+ be minimal. */
+ if (atomic_load_relaxed (&(mutex->__data.__lock)) != 0
+ || lll_trylock (mutex->__data.__lock) != 0)
break;
OK
More information about the Libc-alpha
mailing list