Re: Win32 shared memory speed - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: Win32 shared memory speed
Date
Msg-id 47371BC6.5050305@hagander.net
Whole thread Raw
In response to Re: Win32 shared memory speed  (James Mansion <james@mansionfamily.plus.com>)
List pgsql-hackers
James Mansion wrote:
> Magnus Hagander wrote:
>> IIRC, there hasn't been any direct benchmark for it (though I've
>> wanted to do that but had no time), but it's been the olnly real
>> explanation put forward for the behaviour we've seen. And it does make
>> sense given the thread-centric view of the windows mm.
>>
>> /Magnus   
> How is it supposed to be slow, once its mapped into your process? 
> There's no OS interaction at all then.

Not entirely sure, I didn't think that theory up, I'm just echoing it.
My guess has been somewhere around interaction with the very expensive
between-process context switches.


> If you are suggesting that the inter-process synch objects are slow,
> then that may be so: just use interlocked
> increment and a spin lock in place of a mutex and use an associated
> event to wake up if necessary.
> 
> You dont have to use a named kernel mutex, though it may be handy while
> setting up the shared memory.

We already use the interlocked functions for our spinlocks, with the
MSVC build. With the GCC build, we use custom assembler.


> If you are repeatedly changing the mappings - well, that may be
> something that needs optimisation.

We're not. The postmaster creates the segment, and each backend attaches
to it just once.

//Magnus



pgsql-hackers by date:

Previous
From: "Diego Pires Plentz"
Date:
Subject: [hibernate-team] PostgreSQLDialect
Next
From: Martijn van Oosterhout
Date:
Subject: Re: [hibernate-team] PostgreSQLDialect