| From: | Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi> |
|---|---|
| To: | pgsql-committers(at)postgresql(dot)org |
| Subject: | pgsql: Use a non-locking initial test in TAS_SPIN on x86_64. |
| Date: | 2013-08-29 11:06:05 |
| Message-ID: | E1VF03B-00010A-Og@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Use a non-locking initial test in TAS_SPIN on x86_64.
Testing done in 2011 by Tom Lane concluded that this is a win on Intel Xeons
and AMD Opterons, but it was not changed back then, because of an old
comment in tas() that suggested that it's a huge loss on older Opterons.
However, didn't have separate TAS() and TAS_SPIN() macros back then, so the
comment referred to doing a non-locked initial test even on the first
access, in uncontended case. I don't have access to older Opterons, but I'm
pretty sure that doing an initial unlocked test is unlikely to be a loss
while spinning, even though it might be for the first access.
We probably should do the same on 32-bit x86, but I'm afraid of changing it
without any testing. Hence just add a note to the x86 implementation
suggesting that we probably should do the same there.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/b03d196be055450c7260749f17347c2d066b4254
Modified Files
--------------
src/include/storage/s_lock.h | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2013-08-29 17:12:26 | pgsql: Make error wording more consistent |
| Previous Message | Robert Haas | 2013-08-28 18:14:21 | pgsql: Allow discovery of whether a dynamic background worker is runnin |