postgresql/src/include/storage
Bruce Momjian be58282516 Tom Lane wrote:
> > For a while I though it might be because we are using an alpha TAS in
> > the spinlock rather than the old semaphore. I replaced our spinlock
> > with the standard one and it made no difference. We have been running
> > with our spinlock implementation for nearly 2 months on a production
> > database now without a hitch, so I think it is ok. Did I ever submit
> > any patches for the Alpha spinlock?
>
> Not that I recall.  We did get some advice from some Alpha gurus at DEC
> who seemed to think the existing TAS code is OK.  What was it that you
> felt needed to be improved?

The current code uses semaphores, which has the advantage that it works
well even on multi-processor machines, but the disadvantage that it is not
the fastest way possible. Writing a spinlock on Alpha for SMP machines is
very difficult, as you need to deal with memory barriers. A real mess. But
then one of the people at Compaq pointed out to us that there is a
ready-made routine on Alpha. We implemented it with the two patches below.
I ran tests with lots of parallel back-ends and got around a 10% speed
increase. I include the two patches. Perhaps some of the other people
running Tru64 can have a look at these as well.

Cheers,

Adriaan Joubert
2000-10-08 04:38:21 +00:00
..
backendid.h Add: 2000-01-26 05:58:53 +00:00
block.h Fix a bunch of minor portability problems and maybe-bugs revealed by 2000-03-17 02:36:41 +00:00
buf.h Add: 2000-01-26 05:58:53 +00:00
buf_internals.h Ye-old pgindent run. Same 4-space tabs. 2000-04-12 17:17:23 +00:00
buffile.h Reinstate BufFileTell(). 2000-06-18 03:11:40 +00:00
bufmgr.h TOAST mop-up work: update comments for tuple-size-related symbols such 2000-08-07 20:16:13 +00:00
bufpage.h Heap redo/undo (except for tuple moving used by vacuum). 2000-09-07 09:58:38 +00:00
fd.h Create an fd.c entry point that is just like plain open(2) except that 2000-06-02 03:58:34 +00:00
ipc.h The beos port in the source tree doesn't even compile. and even 2000-10-07 14:39:21 +00:00
item.h Add: 2000-01-26 05:58:53 +00:00
itemid.h Heap redo/undo (except for tuple moving used by vacuum). 2000-09-07 09:58:38 +00:00
itempos.h Ye-old pgindent run. Same 4-space tabs. 2000-04-12 17:17:23 +00:00
itemptr.h misc 2000-07-04 01:49:44 +00:00
large_object.h Back out: 2000-10-08 03:53:15 +00:00
lmgr.h Mark functions as static and ifdef NOT_USED as appropriate. 2000-06-08 22:38:00 +00:00
lock.h Revise aggregate functions per earlier discussions in pghackers. 2000-07-17 03:05:41 +00:00
multilev.h Add: 2000-01-26 05:58:53 +00:00
off.h Add: 2000-01-26 05:58:53 +00:00
page.h Add: 2000-01-26 05:58:53 +00:00
pagenum.h Add: 2000-01-26 05:58:53 +00:00
pos.h Add: 2000-01-26 05:58:53 +00:00
proc.h The heralded `Grand Unified Configuration scheme' (GUC) 2000-05-31 00:28:42 +00:00
relfilenode.h This is temporal place holder for Relation File Node till 2000-09-10 00:06:52 +00:00
s_lock.h Tom Lane wrote: 2000-10-08 04:38:21 +00:00
shmem.h First phase of memory management rewrite (see backend/utils/mmgr/README 2000-06-28 03:33:33 +00:00
sinval.h Add: 2000-01-26 05:58:53 +00:00
sinvaladt.h Clean up #include's. 2000-06-15 03:33:12 +00:00
smgr.h Latest round of fmgr updates. All functions with bool,char, or int2 2000-06-05 07:29:25 +00:00
spin.h The heralded `Grand Unified Configuration scheme' (GUC) 2000-05-31 00:28:42 +00:00