Skip site navigation (1) Skip section navigation (2)

Re: single task postgresql

From: Greg Copeland <greg(at)CopelandConsulting(dot)Net>
To: mlw <markw(at)mohawksoft(dot)com>
Cc: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>,PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: single task postgresql
Date: 2002-02-27 17:40:58
Message-ID: (view raw or whole thread)
Lists: pgsql-hackers

mlw wrote:
> Greg Copeland wrote:
>>Windows does not really have shared memory support.  This has been a
>>beef with the Win32 API for a long time now.  Because it has been a long
>>time complaint, it was finally added in Win2000 and later.  Likewise,
>>I'd like to point out that thinks like sims, shared memory, pipes, etc,
>>and other entities commonly used for concurrent programming strategies
>>are slower in XP.  So, because shared memory really isn't well
>>supported, they elected to have what is, in essense, memory mapped
>>files.  Multiple processes then map the same file and read/write to it
>>as needed, more or less as you would shared memory.  Unless you plan on
>>only targetting on Win 2000 and XP, it sounds like a waste of time.
> This is not really true. Under DOS windows, i.e. 95,98, etc. Shared memory can
> be done in 16 bit land with a touch of assembly and a DLL. Allocate, with
> globalalloc, a shared memory segment. The base selector is a valid 32 bit
> selector, and the memory is mapped in the above 2G space shared and mapped to
> all 32bit processes.

That's fine ad all, however, we're talking about the Win32 API.  None of 
that qualifies.  If you wish to implement back door magic for your own 
use, I guess that's fine but I'd wonder how well it would be received by 
the rest of the developers at large.  I'm betting it wouldn't give me 
the warm fuzzies.

> Under NT through 2K, yes using a memory mapped files is the way to do it, but
> you do not actually need to create a file, you can use (HANDLE)0xFFFFFFFF,
> which is the NT equivilent of the system memory file. The handle returned is a
> system global object which can be shared across processes.

Yes, that's fine, however, this pretty much puts us back to a memory 
mapped file/shared memory implementation.

I guess you could have a feature set which is perhaps optimial (again, 
I've not seen anything which indicates you'll see perf improvement) for 
Win2000/XP platforms.  Perhaps you'd be willing to perform some 
benchmarks and provide source of random read/writes to these segments 
and present to us for comparsion?  I'm personally very curious as to see 
if there is any addition speed to be gleaned even if I am doubtful.

On a side note, if you did create such a benchmark, I'm fairly sure 
there are a couple of guys at IBM that may find them of interest and 
might be willing to contrast these results with other platforms (various 
win32 and unix/linux) and publish the results.

After all, if this path truely provides an optimized solution I'm sure 
many Win32 coders would like to hear about it.


In response to


pgsql-hackers by date

Next:From: Marc LavergneDate: 2002-02-27 17:40:59
Subject: Re: Oracle vs PostgreSQL in real life
Previous:From: Oleg BartunovDate: 2002-02-27 17:36:21
Subject: Re: single task postgresql

Privacy Policy | About PostgreSQL
Copyright © 1996-2015 The PostgreSQL Global Development Group