Re: better atomics - v0.6

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@2ndquadrant.com>
Cc: Heikki Linnakangas <hlinnakangas@vmware.com>, Robert Haas <robertmhaas@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Peter Geoghegan <pg@heroku.com>, Pg Hackers <pgsql-hackers@postgresql.org>, Ants Aasma <ants@cybertec.at>
Date: 2014-09-24T16:44:09Z
Lists: pgsql-hackers
Andres Freund <andres@2ndquadrant.com> writes:
> On 2014-09-24 18:55:51 +0300, Heikki Linnakangas wrote:
>> There doesn't seem to be any hardware implementations of that in the patch.
>> Is there any architecture that has an instruction or compiler intrinsic for
>> that?

> You can implement it rather efficiently on ll/sc architectures. But I
> don't really think it matters. I prefer add_until (I've seen it named
> saturated add before as well) to live in the atomics code, rather than
> reimplement it in atomics employing code. I guess you see that
> differently?

I think the question is more like "what in the world happened to confining
ourselves to a small set of atomics".  I doubt either that this exists
natively anywhere, or that it's so useful that we should expect platforms
to have efficient implementations.

			regards, tom lane


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