| From: | Mark Kirkwood <markir(at)paradise(dot)net(dot)nz> | 
|---|---|
| To: | Kris Kennaway <kris(at)obsecurity(dot)org> | 
| Cc: | current(at)FreeBSD(dot)org, performance(at)FreeBSD(dot)org, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Anyone interested in improving postgresql scaling? | 
| Date: | 2007-04-10 10:41:04 | 
| Message-ID: | 461B69C0.4060707@paradise.net.nz | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Maxime Henrion | 2007-04-10 11:21:50 | Re: Anyone interested in improving postgresql scaling? | 
| Previous Message | Heikki Linnakangas | 2007-04-10 10:40:58 | Re: Group Commit |