[Vm-dev] 32bit clean VM work.

John M McIntosh johnmci at smalltalkconsulting.com
Sun Jun 10 18:02:23 UTC 2007


Well follow the instructions to build a unix VM.

At the point where you use VMMaker to make the VM ensure you go to
Mac OS/vm/specialChangeSets and load

ArraysToGlobalStruct-JMM.1.cs	May already be in image, check source.
bigCursor-bf.1.cs
JMM-fixBiasToGrow.1.cs.zip
VMM38-64bit-imageUpdates.1.cs	May already be in image, check source.
VMM38-gc-instrument-image.1.cs	May already be in image, check source.
VmUpdates-dtl
	VmUpdates-1001-dtl.1.cs
	VmUpdates-1002-dtl.1.cs
	VmUpdates-1003-dtl.1.cs
	VmUpdates-1004-dtl.1.cs
	VmUpdates-1005-dtl.1.cs
	VmUpdates-1006-dtl.1.cs
	JMM-VmUpdates32bitclean.2.cs

For 64bit work no idea, wasn't there some issue with fixes needed to  
build it anyway?

Once the VM is build to test I suggest you look at the call to mmap  
in the unix memory allocation source sqUnixMemory.c
and set the start location from zero to say 1.5GB, then startup your  
VM and ask for 600MB of memory.  In uxGrowMemoryBy look at the
value for  heap + heapSize to see where the heap ends to ensure your  
choices are correct.


I then downloaded a 3.5 image since it contains the macrobenchmarks,  
and ran

| suck |
suck := OrderedCollection new.
	suck add: (ByteArray new: 1024*1024*480).
97 timesRepeat: [
	Smalltalk macroBenchmarks.
	suck add: (ByteArray new: 1024*1024*1).
	Transcript show: Smalltalk garbageCollectMost;cr.
	Transcript show: Smalltalk garbageCollect;cr].


By adjust the 1024*1024*480) you want to put the entire active vm  
memory heap under the 2GB boundary, then the timesRepeat: loop  
allocates memory and
runs the benchmarks to cross over the boundary.    Modifications,  
using a smaller value for 1024*1024*1, really this should be 4 bytes  
in order to march over the boundary in more possible conditions  
however running it would require on the order of 4 million  
iterations. Maybe someone could devote a week and run with a 4K  
allocation.

As mentioned earlier

  I have not tested 64bit VMs at the 0x8000000000000000 boundary.  I  
suspect you could allocate at the 0x7FFFFFFFF0000000 Then ask for  
600MB of memory for the image. That would set the end of memory at  
0x8000000015800000, 344MB over the negative sign boundary, adjusting  
the initial memory allocation to find the boundary.


The other two test cases are the image below the 2gb boundary, which  
should be the first couple of running benchmarks for the VM, and the  
VM fully over the 2GB boundary which can be set by adjust mmap to say  
3GB.


On Jun 10, 2007, at 3:21 AM, Damien Cassou wrote:

> 2007/6/10, John M McIntosh <johnmci at smalltalkconsulting.com>:
>
>> (c) I have not confirmed the changes work with the Unix VM, or the
>> Windows VM, I have no plans to do so.
>
> What can we do to test the unix vm?
>
>
> -- 
> Damien Cassou

--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===




More information about the Vm-dev mailing list