spin locks and starvation

Started by Tom DalPozzoabout 9 years ago2 messagesgeneral
Jump to latest
#1Tom DalPozzo
t.dalpozzo@gmail.com

Hi,
I saw that postgresql implementation makes big use of spin locks.
I was wondering if I should be concerned about possible starvation problem
because I looked around and couldn't find an absolute answer about if linux
spinlocks guarantee protection about starvation or not. I'm using ubuntu
16.04.

I've noticed no problem so far, I'm just wondering.

Regards
Pupillo

#2George Neuner
gneuner2@comcast.net
In reply to: Tom DalPozzo (#1)
Re: spin locks and starvation

On Mon, 3 Apr 2017 11:40:29 +0200, Tom DalPozzo <t.dalpozzo@gmail.com>
wrote:

I saw that postgresql implementation makes big use of spin locks.
I was wondering if I should be concerned about possible starvation problem
because I looked around and couldn't find an absolute answer about if linux
spinlocks guarantee protection about starvation or not. I'm using ubuntu
16.04.

I've noticed no problem so far, I'm just wondering.

No form of locking can guarantee progress - starvation avoidance
requires use of a wait-free arbitration method.

Note that "wait-free" is not the same as "lock-less". Lock-less
methods guarantee only that *some* thread can make progress, not that
all threads will make progress. Any particular thread may starve
under lock-less arbitration.

There are a number of lock-less algorithms to choose from, but truely
wait-free algorithms are complex and difficult to implement correctly.
Outside of hard real-time systems they are quite rare.
http://www.cs.technion.ac.il/~erez/Papers/wfquque-ppopp.pdf

Spin locking is the optimal *locking* technique to use when conflicts
are expected to occur relatively often, but the period of locking is
relatively short [wrt to the unlocked period and for some respective
definitions of "relatively"].

YMMV,
George

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general