[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [PATCH] Cache aligned locks for PPC64
- From: Daniel Jacobowitz <drow false org>
- To: sjmunroe vnet ibm com
- Cc: NPTL <phil-list redhat com>, Paul Mackerras <paulus samba org>
- Subject: Re: [PATCH] Cache aligned locks for PPC64
- Date: Tue, 13 May 2003 14:03:46 -0400
On Tue, May 13, 2003 at 12:56:13PM -0500, Steven Munroe wrote:
> In powerpc the memory reservations used for atomic updates are usually
> associate with the (L1) cache line. For all current 64-bit
> implementations this is 128-bytes. Since pthread_* locks are normally
> smaller (32-56 bytes) than the cache line we can see false sharing
> between adjacent locks in static and arrays. In extreme cases (100
> threads contending for 10 mutexes) we can measure degradations of 40-70%.
>
> One way to address this to apply the __attribute__ ((__aligned__
> (__CACHE_ALIGN_SIZE))) to each lock type in
> sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h. This does not
> change the sizeof or array stride, but does force 128-byte alignment in
> static and within containing structs. This insures that adjacent
> pthread_locks are in different cache lines.
>
> Powerpc32 is more complicated. Older 32-bit processors have 32-byte
> cache lines but 32-bit applications will run on 64-bit processors with
> 128-byte cache line. The compromise is to set __CACHE_ALIGN_SIZE
> 32-bytes for powerpc32. This correct for 32-bit processors and may
> reduce some false sharing on 64-bit. The alterative would define
> __CACHE_ALIGN_SIZE to empty (not attribute) for powerpc32.
Um... this represents an ABI change for PowerPC32. I don't believe you
can just do this. Anything with a lock declared in a structure will
break.
> 2003-05-12 Steven Munroe <sjmunroe us ibm com>
>
> * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
> (__CACHE_ALIGN_SIZE): Define.
> (pthread_mutex_t): Add __aligned__ attribute.
> (pthread_cond_t): Add __aligned__ attribute.
> (pthread_rwlock_t): Add __aligned__ attribute.
> (pthread_barrier_t): Add __aligned__ attribute.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]