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