Skip site navigation (1) Skip section navigation (2)

Re: Re: Alpha spinlock

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: a(dot)joubert(at)albourne(dot)com
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Arrigo Triulzi <arrigo(at)albourne(dot)com>, pgsql-ports(at)postgresql(dot)org
Subject: Re: Re: Alpha spinlock
Date: 2000-10-08 04:25:29
Message-ID: 200010080425.AAA04041@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-ports
Tom, what do you want to do with this patch?

> 
> 
> 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

> *** src/include/storage/s_lock.h	Sat Sep 30 12:13:42 2000
> --- src/include/storage/s_lock.h-	Sat Sep 30 12:13:42 2000
> ***************
> *** 252,266 ****
>    * Note that slock_t on the Alpha AXP is msemaphore instead of char
>    * (see storage/ipc.h).
>    */
> - #include <alpha/builtins.h>
> - #if 0
>   #define TAS(lock)	  (msem_lock((lock), MSEM_IF_NOWAIT) < 0)
>   #define S_UNLOCK(lock) msem_unlock((lock), 0)
>   #define S_INIT_LOCK(lock)		msem_init((lock), MSEM_UNLOCKED)
>   #define S_LOCK_FREE(lock)	  (!(lock)->msem_state)
> - #else
> - #define TAS(lock)         (__INTERLOCKED_TESTBITSS_QUAD((lock),0))
> - #endif
>   
>   #else /* i.e. not __osf__ */
>   
> --- 252,261 ----

> *** src/include/port/alpha.h	Sat Sep 30 12:13:21 2000
> --- src/include/port/alpha.h-	Sat Sep 30 12:13:21 2000
> ***************
> *** 1,10 ****
>   #define USE_POSIX_TIME
>   #define DISABLE_XOPEN_NLS
>   #define HAS_TEST_AND_SET
> ! /*#include <sys/mman.h>*/			/* for msemaphore */
> ! /*typedef msemaphore slock_t;*/
> ! #include <alpha/builtins.h>
> ! typedef volatile long slock_t;
>   
>   /* some platforms define __alpha, but not __alpha__ */
>   #if defined(__alpha) && !defined(__alpha__)
> --- 1,8 ----
>   #define USE_POSIX_TIME
>   #define DISABLE_XOPEN_NLS
>   #define HAS_TEST_AND_SET
> ! #include <sys/mman.h>			/* for msemaphore */
> ! typedef msemaphore slock_t;
>   
>   /* some platforms define __alpha, but not __alpha__ */
>   #if defined(__alpha) && !defined(__alpha__)


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

In response to

Responses

pgsql-ports by date

Next:From: Tom LaneDate: 2000-10-08 04:34:30
Subject: Re: Re: Alpha spinlock
Previous:From: Peter EisentrautDate: 2000-10-07 21:59:39
Subject: [PORTS] To the Beos folks

pgsql-hackers by date

Next:From: Bruce MomjianDate: 2000-10-08 04:28:07
Subject: Re: Note about include files]
Previous:From: Bruce MomjianDate: 2000-10-08 04:11:28
Subject: Re: pg_dump, BLOBs and single-table dumps - RFC

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group