Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Oct 2012 14:21:55 +0400
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        Andre Oppermann <andre@FreeBSD.org>
Cc:        src-committers@FreeBSD.org, svn-src-user@FreeBSD.org
Subject:   Re: svn commit: r241798 - in user/andre/tcp_workqueue/sys: kern sys
Message-ID:  <20121021102155.GA64905@FreeBSD.org>
In-Reply-To: <201210210846.q9L8kGX7029653@svn.freebsd.org>
References:  <201210210846.q9L8kGX7029653@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Oct 21, 2012 at 08:46:16AM +0000, Andre Oppermann wrote:
A> Author: andre
A> Date: Sun Oct 21 08:46:15 2012
A> New Revision: 241798
A> URL: http://svn.freebsd.org/changeset/base/241798
A> 
A> Log:
A>   Make sure that global locks have their own CPU cache line in
A>   the .bss section of the kernel and do not end up sharing one
A>   by chance or the place they are defined in.
A>   
A>   Three new macros are added:
A>    MTX_GLOBAL(name)		defining the mutex
A>    MTX_GLOBAL_STATIC(name)	defining the mutex as static
A>    MTX_GLB(name)			accessing the mutex in mtx_lock()
A>   
A>   This makes global locks cache deterministic.  Changes to the
A>   .bss layout and ordering due to differences in completely
A>   unrelated parts of the kernel can no longer cause global
A>   locks to share the same CPU cache line.
A>   
A>   This is a proof of concept with only one global lock converted.
A>   
A>   I'm open to suggestions and improvements on the macros and
A>   their naming.

My fault, I have confused you yesterday in our discussion. Actually
we don't need to embrace declaration into additional struct.
This code works:

static struct mtx __aligned(CACHE_LINE_SIZE) foo_mtx;

When speaking about embracing, I actually meant that we can embrace
into anonymous struct a mutex and a structures it protects, not a
mutex only.

P.S. Before merging such changes to head we need to do some benchmarking
proving that this isn't a nop.

-- 
Totus tuus, Glebius.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121021102155.GA64905>