Re: better atomics - v0.6

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Heikki Linnakangas <hlinnakangas@vmware.com>, Tom Lane <tgl@sss.pgh.pa.us>, Amit Kapila <amit.kapila16@gmail.com>, Peter Geoghegan <pg@heroku.com>, Pg Hackers <pgsql-hackers@postgresql.org>, Ants Aasma <ants@cybertec.at>, Alvaro Herrera <alvherre@2ndquadrant.com>
Date: 2014-09-26T01:02:28Z
Lists: pgsql-hackers
On Thu, Sep 25, 2014 at 6:03 PM, Andres Freund <andres@anarazel.de> wrote:
> On 2014-09-24 20:27:39 +0200, Andres Freund wrote:
>> On 2014-09-24 21:19:06 +0300, Heikki Linnakangas wrote:
>> I won't repost a version with it removed, as removing a function as the
>> only doesn't seem to warrant reposting it.
>
> I've fixed (thanks Alvaro!) some minor additional issues besides the
> removal and addressing earlier comments from Heikki:
> * removal of two remaining non-ascii copyright signs. The only non ascii
>   name character that remains is Alvaro's name in the commit message.
> * additional comments for STATIC_IF_INLINE/STATIC_IF_INLINE_DECLARE
> * there was a leftover HAVE_GCC_INT_ATOMICS reference - it's now split
>   into different configure tests and thus has a different name. A later
>   patch entirely removes that reference, which is why I'd missed that...
>
> Heikki has marked the patch as 'ready for commiter' in the commitfest
> (conditional on his remarks being addressed) and I agree. There seems to
> be little benefit in waiting further. There *definitely* will be some
> platform dependant issues, but that won't change by waiting longer.
>
> I plan to commit this quite soon unless somebody protests really
> quickly.
>
> Sorting out the issues on platforms I don't have access to based on
> buildfarm feedback will take a while given how infrequent some of the
> respective animals run... But that's just life.

I feel like this could really use a developer README: what primitives
do we have, which ones are likely to be efficient or inefficient on
which platforms, how do atomics interact with barriers, etc.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Commits

  1. Avoid the use of a separate spinlock to protect a LWLock's wait queue.

  2. Improve LWLock scalability.

  3. Reduce the number of semaphores used under --disable-spinlocks.

  4. Alter the configure script to fail immediately if the C compiler does not