Обсуждение: spin locks and starvation
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
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