From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Spinlocks and compiler/memory barriers |
Date: | 2014-06-26 23:21:25 |
Message-ID: | 20140626232125.GF1926@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2014-06-26 15:40:11 -0700, Tom Lane wrote:
> Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> > On 2014-06-26 14:13:07 -0700, Tom Lane wrote:
> >> Surely it had better be a read barrier as well?
>
> > I don't immediately see why it has to be read barrier? Hoisting a load
> > from after the release into the locked area of code should be safe?
>
> No doubt, but delaying a read till after the unlocking write would
> certainly not be safe.
Right. What we actually want for locking is what several systems
(e.g. C11, linux) coin acquire/release barriers.
Not sure whether we should introduce a separate set of acquire/release
macros, or "promote" our barriers to have stronger guarantees than the
name implies.
The definition as I understand it is:
A acquire barrier implies that:
* memory operations from after the barrier cannot appear to have
happened before the barrier
* but: memory operations from *before* the barrier are *not* guaranteed to be
finished
A finished release barrier implies:
* stores from before the barrier cannot be moved past
* loads from before the barrier cannot be moved past
* but: reads from *after* the barrier might occur *before* the barrier.
I believe that all our current barrier definitions (except maybe alpha
which I haven't bothered to check thoroughly) satisfy those
constraints. That's primarily because we don't have support for all that
many platforms and use full memory barriers for read/write barriers in
several places.
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Asif Naeem | 2014-06-26 23:26:01 | Re: Extending MSVC scripts to support --with-extra-version |
Previous Message | Vik Fearing | 2014-06-26 23:01:22 | Re: Window function optimisation, allow pushdowns of items matching PARTITION BY clauses |