On Tue, Apr 10, 2007 at 06:26:37PM -0400, Tom Lane wrote:
> Kris Kennaway <kris@obsecurity.org> writes:
> > On Tue, Apr 10, 2007 at 05:36:17PM -0400, Tom Lane wrote:
> >> Anyway I'd be interested to know what the test case is, and which PG
> >> version you were testing.
>
> > I used 8.2 (and some older version when I first noticed it a year ago)
> > and either sysbench or supersmack will show it - presumably anything
> > that makes simultaneous queries. Just instrument sleepq_broadcast()
> > to e.g. log a KTR event when it wakes more than 1 process and you'll
> > see it happening.
>
> Sorry, I'm not much of a BSD kernel hacker ... but sleepq_broadcast
> seems a rather generic name. Is that called *only* from semop?
It's part of how wakeup() is implemented.
> I'm wondering if you are seeing simultaneous wakeup from some other
> cause --- sleep timeout being the obvious possibility. We are aware
> of behaviors (search the PG lists for "context swap storm") where a
> number of backends will all fail to get a spinlock and do short usleep
> or select-timeout waits. In this situation they'd all wake up at the
> next scheduler clock tick ...
Nope, it's not this.
Kris