VM cleanup (was Re: [VM] NCM performance report)
Andrew C. Greenberg
werdna at gate.net
Sat Mar 27 01:06:32 UTC 1999
> Dan's worries about image size in the recent NCM thread reminded me to ask a
> question I had almost let slip out of my mind:-
> when/who/how is the VM going to get cleaned out; by which I mean to ask if
> anyone is actively pursuing moving many of the 'extra' prims out into Plugin-
> land thus making a minimum VM much more easy to produce?
.. . .
> Along with minimum images, headlessness and loadable
> partial-images, a small VM
> might make a practical scripting utility possible. It would
> certainly load and
> startup more rapidly.
>
> So, is anyone already doing this?
Before assigning that task, let's see if we can't tune the primitive
plugins somewhat better first. I haven't studied the code for
awhile, but as I recall, the present primitive plugin (at least for
the Mac) performs a table lookup of the plugin name in the module
tables with EACH AND EVERY CALL to the primitive. Accordingly,
primitives deep in an inner loop can face a substantial overhead just
from the primitive calls.
So some sort of caching arrangement needs to be accomplished to assure:
(1) that modules are loaded exactly once for each session in
which they are used (but the caches must be cleared on image startup
shutdowns;
(2) that each primitive is looked up exactly once for each
session in which it is used (likewise, with caches cleared on image
startup/shutdowns; and
(3) that the overhead of this protocol isn't itself large in
comparison with the overhead of present-day primitive calls once the
module is loaded and the primitive has been called at least once.
If this is already in place and I missed it, mea culpa. But without
it, let's leave critical innerloop-style primitives inside the VM
until we have polished and refined the primitive plugin process
somewhat; or else Tim's project (one that ought to be undertaken) may
lead to a substantial degradation of performance.
Some thought ought to go to plugin library naming conventions and
version-testing conventions as well.
More information about the Squeak-dev
mailing list
|