Mac 3.8.6b4 VM posted for testing
John M McIntosh
johnmci at smalltalkconsulting.com
Tue Feb 1 04:53:20 UTC 2005
I've posted a macintosh VM that includes the buffered display
improvements, changes from Andreas to view certain GC events/features
and my
changes from last fall to collect GC statistics & alter the VM to bias
for growth versus compaction.
I've stuck them on my idisk
http://homepage.mac.com/johnmci/FileSharing.html
See the experimental directory and the squeakGarbage sub-directory.
or see the following ftp directory for zip files.
ftp://www.smalltalkconsulting.com/squeakGarbage/
ftp://www.smalltalkconsulting.com/
I have not build an os-9 version yet, and I will post a 3.8.6b5 VM in a
day after some minor changes to statistical collection and any changes
based on feedback I receive.
Folks who are interested should review the VM for any performance
improvements in the following areas.
a) Applications that invoke lots of drawing should be faster
b) By setting these two VM parms some application may see altered
memory growth patterns (better) and faster transaction thruput.
Repeatable results are welcome.
Smalltalk setGCBiasToGrowGCLimit: 16*1024*1024. "Set growth limit
before full GC to 16MB"
Smalltalk setGCBiasToGrow: 1.
Set bias to grow upto GCLimit, this can avoid a problem where we
attempt to avoid growing but results in thousands of incremental GC
events as
we approach a knee in a curve of space used versus the
growth/compaction decision.
3.8.6b4 has:
Ensure VMMaker 3.8b2 - the VM code classes and tools for building
a working vm for Squeak version > 3.8-6461. is incorporated.
Add Andreas's GC improvement changes for
* primitiveIsYoung: This answers the question whether an object
currently lives in young or in old space.
* primitiveIsRoot: Answers the question whether any given object is
currently a root for young space.
* primitiveRootTable: Answers a snapshot of the current root table.
Useful to examine the roots table if the analysis requires complex
other operations during which the root table might be modified itself.
Note that since this primitive can cause GC there is a small chance
that it will give an inaccurate answer.
* primitiveRootTableAt: Answers a single element of the root table
(by one-based index). This primitive can be used to quickly scan the
root table for certain objects.
* primitiveSetGCSemaphore: Indicates a semaphore (index) to be
signaled whenever a garbage collection occurs. I can see at least two
uses uses for the GC semaphore: running cleanup actions (for example
after full GCs occured) and dynamic parameter tuning for the GC
algorithm itself.
Add John's changes for
Smalltalk setGCBiasToGrowGCLimit: 16*1024*1024. "Set growth limit
before full GC to 16MB"
Smalltalk setGCBiasToGrow: 1.
Set bias to grow upto GCLimit, this can avoid a problem where we
attempt to avoid growing but results in thousands of incremental GC
events as
we approach a knee in a curve of space used versus the
growth/compaction decision.
3.8.6b3 Add in logic for become: to fix issues with changes to
become: logic.
3.8.6b2 sqMacWindow.c reduce number of lock/unlock pixel events and
flush no more than 91 fps, with flush check every 1/50 or 1/60 and 1/5
of a second. this
shaves another 50% off making drawing pixels 1.3% of the time
originally taken.
3.8.6b1 sqMacWindow.c, sqUIEvents.c, changed logic to flush screen
every 125 fps, this makes pixel level drawing complete in 2% of the
time originally taken.
--
========================================================================
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
More information about the Squeak-dev
mailing list
|