]> granicus.if.org Git - postgresql/commit
Tom Lane wrote:
authorBruce Momjian <bruce@momjian.us>
Sun, 8 Oct 2000 04:38:21 +0000 (04:38 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 8 Oct 2000 04:38:21 +0000 (04:38 +0000)
commitbe582825162e329f382286c40f11870fe0fc5f42
tree80dcda1f69a9ac6f1ce011a36a1af769e4ee60ce
parente5e5de8e8c29531053abd13cc068ed6ca9065080
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
src/include/port/osf.h
src/include/storage/s_lock.h