CACHE_LINE_SIZE macro.

Eitan Adler lists at eitanadler.com
Mon Nov 5 17:02:13 UTC 2012


On 5 November 2012 11:49, Warner Losh <imp at bsdimp.com> wrote:
>> There has been some discussion recently about padding lock mutexs to
>> the cache line size in order to avoid false sharing of CPUs. Some have
>> claimed to see significant performance increases as a result.
>
> Is that an out-of-kernel interface?
>
> If we did that, we'd have to make it run-time settable, because there's no one right answer for arm and MIPS cpus: they are all different.

The discussion ended up with using a special parameter
CACHE_LINE_SIZE_LOCKS which is different than CACHE_LINE_SIZE. This is
necessary for other reasons as well (CACHE_LINE_SIZE_LOCKS may take
into account prefetching of cache lines, but CACHE_LINE_SIZE
wouldn't).

I think the "correct" thing to do here is choose a reasonable, but
not-always-correct CACHE_LINE_SIZE_LOCKS and make CACHE_LINE_SIZE a
per-board constant (or run time setting, or whatever works).  You
can't make it run-time settable as the padding is part of the ABI:

For more details see
http://comments.gmane.org/gmane.os.freebsd.devel.cvs/483696
which contains the original discussion.

Note - I was not involved.



-- 
Eitan Adler


More information about the freebsd-mips mailing list