[Seaside] Re: OmniBase
David T. Lewis
lewis at mail.msen.com
Tue Dec 27 16:50:03 CET 2005
On Tue, Dec 27, 2005 at 09:49:13AM +0100, Lukas Renggli wrote:
> > Interval>>includes: that is used by OSProcess to
> > simulate Windows-Filesystem file-locking is extremely
> > slow. A few days ago there was a discussion in the
> > VisualWorks mailing-list and some years ago one in
> > comp.lang.smalltalk.dolphin about the bad performance
> > of this particular method in ST80. Unfortunately this is
> > not easy to fix and there are a lot of edge cases to
> > take care of, but by writing good tests it would be easy
> > to find a better solution.
> After checking again, I have a small correction here: It is rather
> Interval>>intersection: that is the bottel-neck of OSProcess, what is
> more difficult to fix.
You can make the performance problem go away by turning off Windows file
lock emulation with "OSProcessAccessor emulateWin32FileLocking: false".
This will disable the registry of file locks that is uses to emulate
Win32 file lock behavior on Unix, which in turn will elimate all the
#intersection: calls. If an Omnibase application was maintaining a lot
of small file region locks, this could have a really big performance
The Win32 emulation is turned on by default in hopes of getting more
consistent behavior across Windows and Unix (albeit at a performance
penalty). However, this emulation will only work within a single Squeak
image, so if you are trying to run multiple Squeak images against
an Omnibase database, the attempt to emulate Windows is most likely
doing more harm than good.
I do not know anything about Omnibase, so I can't say how it will be
affected by turning off the Win32 emulation. Maybe it will just be
faster and more reliable.
More information about the Seaside