Re: [HACKERS] spin locks - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] spin locks
Date
Msg-id 199802151752.MAA25384@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] spin locks  (The Hermit Hacker <scrappy@hub.org>)
Responses Re: [HACKERS] spin locks  (The Hermit Hacker <scrappy@hub.org>)
Re: [HACKERS] spin locks  (Jordan Henderson <jordanh@ccia.com>)
List pgsql-hackers
>
> On Sun, 15 Feb 1998, Bruce Momjian wrote:
>
> > > spin-lock.patch
> > >
> > >     I'm not sure if this is really useful, but it seems stupid to have
> > >     a backend wasting cpu cycles in a busy loop while the process which
> > >     should release the lock is waiting for the cpu. So I added a call
> > >     to process_yield() if the spin lock can't obtained.
> > >     This has been implemented and tested only on Linux. I don't know if
> > >     other OS have process_yield(). If someone can check please do it.
> >
> > Massimo brings up a good point.  Most of our s_lock.h locking does asm
> > mutex loops looking for a lock.  Unless we are using a multi-cpu
> > machine, there is no way this is going to change while we are spinning.
>
>     I'm not quite sure I follow this...in a multi-cpu environment,
> would process_yield() introduce a problem? *raised eyebrow*

Probably.  I would leave the code as-is for multi-cpu systems.

>
> > Linux has process_yield(), but most OS's don't.  Is there a
> > platform-independent way to relinquish the cpu if the first attempt at
> > the spinlock fails?  Would a select() of 1 microsecond work?
>
>     There is nothing wrong with introducing an OS specific
> optimization to the code...we can add a HAVE_PROCESS_YIELD to config.h and
> if a system has it, use it...

Yep, but we need to check for multiple cpu's first before enabling it.
That would be a good trick from configure.

--
Bruce Momjian
maillist@candle.pha.pa.us

pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] PostGreSQL v6.2.1 for Linux Alpha
Next
From: The Hermit Hacker
Date:
Subject: Re: [HACKERS] spin locks