On Tue, Apr 10, 2007 at 02:46:56PM -0400, Tom Lane wrote: > Kris Kennaway <[EMAIL PROTECTED]> writes: > >>> Make SYSV semaphores less dumb about process wakeups. Currently > >>> whenever the semaphore state changes, all processes sleeping on the > >>> semaphore are woken, even if we only have released enough resources > >>> for one waiting process to claim. > > >> Correct. The behavior Kris describes is surely bad, but it's not > >> relevant to Postgres' usage of SysV semaphores. > > > Sorry, but the behaviour is real. > > Oh, I'm sure the BSD kernel acts as you describe. But Mark's point is > that Postgres never has more than one process waiting on any particular > SysV semaphore, and so the problem doesn't really affect us. > > Or do you mean that the kernel wakes all processes sleeping on *any* > SysV semaphore? That would be nasty :-(
To be clear, some behaviour that postgresql does with sysv semaphores causes wakeups of many processes at once. i.e. if you have 20 clients, you will get up to 20 wakeups. I haven't studied the precise cause of this, but it is empirically true. This is the scaling problem I described, and it's what mux's patch addresses. Kris
pgprkAvGXIDwn.pgp
Description: PGP signature