On 2007-04-10, Tom Lane <[EMAIL PROTECTED]> wrote: > Kris Kennaway <[EMAIL PROTECTED]> writes: >> I have not studied the exact code path, but there are indeed multiple >> wakeups happening from the semaphore code (as many as the number of >> active postgresql processes). It is easy to instrument >> sleepq_broadcast() and log them when they happen. > > There are certainly cases where Postgres will wake up a number of > processes in quick succession, but that should happen from a separate > semop() kernel call, on a different semaphore, for each such process. > If there's really multiple processes being released by the same semop() > then there's a bug we need to look into (or maybe it's a kernel bug?). > Anyway I'd be interested to know what the test case is, and which PG > version you were testing.
This is a problem in FreeBSD, not specifically to do with postgres - the granularity for SysV semaphore wakeups in FreeBSD-6.x and earlier is the entire semaphore set, not just one specific semaphore within the set. I explained that to Kris some weeks ago, and someone (mux) did a patch (to FreeBSD, not pg) which was already mentioned in this discussion. -- Andrew, Supernews http://www.supernews.com - individual and corporate NNTP services ---------------------------(end of broadcast)--------------------------- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate