memory and VM issues (interp.c part 1 of 2 attached)

David T. Lewis lewis at mail.msen.com
Thu Aug 4 20:20:26 UTC 2005


All the tests that I did started with the ./dist3 image. The various
versions of VMM were loaded into that base image, and the platforms
sources were of course separately downloaded from the Subversion
server. In all cases, the ./src tree was generated by a VmMakerTool
running in the dist3 based image.

If the image and the VM disagree as to the index of the VM parameter
for word size, I can certainly imagine that this would be a problem.
I'll check it out when I get home.

Thanks,

Dave

On Thu, Aug 04, 2005 at 09:50:18AM -0700, John M McIntosh wrote:
> Ok, perhaps you can summarize.
> 
> Are you saying if you take a 3.8 base image then apply a tpr.21 and  
> build a VM that it works fine with the 3.8 base image?
> 
> And If you take Ian's ./dist3 image and run that then it fails using  
> the new VM?
> 
> I will note that the call to get VMMparameter data has different  
> slots from the one Ian originally submitted.
> You should check that the ./dist3 image has
> 
> wordSize
>      "Answer the size (in bytes) of an object pointer."
>      "Smalltalk wordSize"
> 
>      ^[SmalltalkImage current vmParameterAt: 40] on: Error do: [4]
> 
> 
> primitiveVMParameter
>      "Behaviour depends on argument count:
>          0 args:    return an Array of VM parameter values;
>          1 arg:    return the indicated VM parameter;
>          2 args:    set the VM indicated parameter.
>      VM parameters are numbered as follows:
>          1    end of old-space (0-based, read-only)
>          2    end of young-space (read-only)
>          3    end of memory (read-only)
>          4    allocationCount (read-only)
>          5    allocations between GCs (read-write)
>          6    survivor count tenuring threshold (read-write)
>          7    full GCs since startup (read-only)
>          8    total milliseconds in full GCs since startup (read-only)
>          9    incremental GCs since startup (read-only)
>          10    total milliseconds in incremental GCs since startup  
> (read-only)
>          11    tenures of surving objects since startup (read-only)
>          12-20 specific to the translating VM
>          21    root table size (read-only)
>          22    root table overflows since startup (read-only)
>          23    bytes of extra memory to reserve for VM buffers,  
> plugins, etc.
>          24    memory threshold above which shrinking object memory (rw)
>          25    memory headroom when growing object memory (rw)
>          26  interruptChecksEveryNms - force an ioProcessEvents every  
> N milliseconds, in case the image  is not calling getNextEvent often  
> (rw)
>          27    number of times mark loop iterated for current IGC/FGC  
> (read-only) includes ALL marking
>          28    number of times sweep loop iterated  for current IGC/ 
> FGC (read-only)
>          29    number of times make forward loop iterated for current  
> IGC/FGC (read-only)
>          30    number of times compact move loop iterated for current  
> IGC/FGC (read-only)
>          31    number of grow memory requests (read-only)
>          32    number of shrink memory requests (read-only)
>          33    number of root table entries used for current IGC/FGC  
> (read-only)
>          34    number of allocations done before current IGC/FGC  
> (read-only)
>          35    number of survivor objects after current IGC/FGC (read- 
> only)
>          36  millisecond clock when current IGC/FGC completed (read- 
> only)
>          37  number of marked objects for Roots of the world, not  
> including Root Table entries for current IGC/FGC (read-only)
>          38  milliseconds taken by current IGC  (read-only)
>          39  Number of finalization signals for Weak Objects pending  
> when current IGC/FGC completed (read-only)
>          40 BytesPerWord for this image
> 
> 
> 
> On 4-Aug-05, at 4:20 AM, David T. Lewis wrote:
> 
> > On Wed, Aug 03, 2005 at 11:00:12PM -0700, John M McIntosh wrote:
> >
> >> I think if you look the johnmci & ar's GC instrumentation and weak
> >> pointer changes do not consider the
> >> width 32 versus 64 and originally used hard coded numbers to indicate
> >> the size of a word or header.
> >> Later this was changed to use constants.
> >>
> >
> > Yes, that's right. But I've tested VMM versions with and without
> > the constants (Tim put these in in the very next version of VMM as
> > I recall), so that does not appear to be related to the problem.
> > Also note that I'm building 32 bit VMs on 32 bit hardware for all
> > the results I've reported.
> >
> > So to summarize: The problem first appears as of VMMaker-tpr.22, which
> > adds the johnmci & ar's GC instrumentation and weak pointer changes.
> > The combination of VMMaker-tpr.21 plus ar's changes alone are not
> > sufficient to trigger the problem.  The problem shows up when running
> > an image from ./dist3 (i.e. an image that has had the 64 bit image
> > changes added), but not on other images such as Squeak3.9a-6472.
> > All tests were done on 32 bit Intel Linux.
> >
> > Dave
> >
> >
> >
> 
> --
> ======================================================================== 
> ===
> John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
> Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
> ======================================================================== 
> ===



More information about the Vm-dev mailing list