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.
http://www.supernews.com - individual and corporate NNTP services
---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at