Re: Spinlocks, yet again: analysis and proposed patches
Bruce Momjian <pgman@candle.pha.pa.us>
From: Bruce Momjian <pgman@candle.pha.pa.us>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Greg Stark <gsstark@mit.edu>, Marko Kreen <marko@l-t.ee>, pgsql-hackers@postgresql.org
Date: 2005-09-19T22:35:42Z
Lists: pgsql-hackers
I have removed this TODO item: * Research use of sched_yield() for spinlock acquisition failure --------------------------------------------------------------------------- Tom Lane wrote: > Greg Stark <gsstark@mit.edu> writes: > > Marko Kreen <marko@l-t.ee> writes: > > (I speculate that it's set up to only yield the processor to other > > processes already affiliated to that processor. In any case, it > > is definitely capable of getting through 10000 yields without > > running the guy who's holding the spinlock.) > > > Maybe it should try sched_yield once and then use select after that? > > I tried that, actually, but it didn't seem to offer any particular > benefit. (Maybe it would have helped more on older Linux kernels before > they changed sched_yield?) > > I'm feeling even more disenchanted with sched_yield now that Marko > pointed out that the behavior was changed recently. Here we have a > construct that is not portable cross-platform, does not act as > documented in its man page, and the kernel guys feel free to whack its > behavior around in major ways without documenting that either. It seems > to be a crap-shoot whether it will be useful on any particular machine > or not. At least with the select() code we can be reasonably confident > we know what will happen. > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073