mirror of
https://github.com/postgres/postgres.git
synced 2026-03-13 06:06:25 -04:00
> > 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 |
||
|---|---|---|
| .. | ||
| backendid.h | ||
| block.h | ||
| buf.h | ||
| buf_internals.h | ||
| buffile.h | ||
| bufmgr.h | ||
| bufpage.h | ||
| fd.h | ||
| ipc.h | ||
| item.h | ||
| itemid.h | ||
| itempos.h | ||
| itemptr.h | ||
| large_object.h | ||
| lmgr.h | ||
| lock.h | ||
| multilev.h | ||
| off.h | ||
| page.h | ||
| pagenum.h | ||
| pos.h | ||
| proc.h | ||
| relfilenode.h | ||
| s_lock.h | ||
| shmem.h | ||
| sinval.h | ||
| sinvaladt.h | ||
| smgr.h | ||
| spin.h | ||