Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Apr 2007 22:41:04 +1200
From:      Mark Kirkwood <markir@paradise.net.nz>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        performance@FreeBSD.org, current@FreeBSD.org, pgsql-hackers <pgsql-hackers@postgresql.org>
Subject:   Re: Anyone interested in improving postgresql scaling?
Message-ID:  <461B69C0.4060707@paradise.net.nz>
In-Reply-To: <20070226002234.GA80974@xor.obsecurity.org>
References:  <20070226002234.GA80974@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Kris Kennaway wrote:
> If so, then your task is the following:
> 
> 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.  i.e. there is a thundering herd
> wakeup situation which destroys performance at high loads.  Fixing
> this will involve replacing the wakeup() calls with appropriate
> amounts of wakeup_one().

I'm forwarding this to the pgsql-hackers list so that folks more 
qualified than I can comment, but as I understand the way postgres 
implements locking each process has it *own* semaphore it waits on  - 
and who is waiting for what is controlled by an in (shared) memory hash 
of lock structs (access to these is controlled via platform Dependant 
spinlock code). So a given semaphore state change should only involve 
one process wakeup.

Cheers

Mark



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?461B69C0.4060707>