Tatsuo Ishii wrote:
> Today I revisited the implemnetation (replacing sync() with
> open/_commit) I made several days ago and found a bug with it (thanks
> to Hiroshi). With the fixed version of it, now my Win32 port has
> passed your test even right after checkpoint!.
I presume that this implementation tracks which files have been opened
and uses _commit() to write all the changes to disk for those files?
If so, then it would be of significant value, IMHO, if you could
abstract the changes in such a way that they could be applied to the
Unix side as well.
sync() writes *all* uncommitted buffers to disk, whether or not they
belong to the process or process group that initiated the sync(). On
systems which do more than just host PG, a sync() does more work
(sometimes much more work) than is necessary and will unnecessarily
burden the system with writes. I think it would be a win, from a
design standpoint if nothing else, if PG committed only those pages
that it was responsible for.
The Unix equivalent of _commit() appears to be fsync() or fdatasync().
So it sounds a lot like a "port" to Unix of the changes you have made
for this might easily be a trivial search and replace. :-)
--
Kevin Brown kevin@sysexperts.com