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: | 3C7D1A2A.9090006@copelandconsulting.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
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.
Greg
From | Date | Subject | |
---|---|---|---|
Next Message | Marc Lavergne | 2002-02-27 17:40:59 | Re: Oracle vs PostgreSQL in real life |
Previous Message | Oleg Bartunov | 2002-02-27 17:36:21 | Re: single task postgresql |