On Wed, Dec 1, 2010 at 2:09 AM, John M McIntosh < johnmci@smalltalkconsulting.com> wrote:
If you are compiling your own macintosh VM
Thanks John for the answer. Yes, I am compiling my own, but the problem is present with the standard vm also. I answer above....
then go look at sqSqueakOSXApplication.m
- (NSInteger) parseArgument: (NSString *) argData peek: (NSString *) peek {
... if ([argData compare: @"-memory"] == NSOrderedSame) { gMaxHeapSize = (usqInt) [self strtobkm: [peek UTF8String]]; return 2; } return 0; }
I tried this passing -memory 1500m. The value is get and set correct here. So, after this, we have: gMaxHeapSize = 1572864000
The problem is that after, when you choose the image to start, and the function sqAllocateMemoryMac is called, gMaxHeapSize lost the value passes by -memory and has again the default. So, in this case, when this function is called,
gMaxHeapSize = 536870912
and not 1572864000
and follow the bouncing gMaxHeapSize to see what happens. You'll find the use at startOfmmapForANONMemory = mmap(startOfAnonymousMemory, freeSpaceRoundedUpToPageSize, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED,0,(off_t)0);
in sqMacV2Memory.c
Here it doesn't pass because the big if if (gSqueakUseFileMappedMMAP) { returns 0 since this is the value it has in the Info.plist
What is that if I set a special value in SqueakMaxHeapSize (1572864000) weird is that enabling or not that value, I have more or less the same results:
gSqueakUseFileMappedMMAP -> 0 Smalltalk garbageCollect 1505201876
gSqueakUseFileMappedMMAP -> 1 Smalltalk garbageCollect 1505199640
But in one case the startOfmmapForANONMemory = mmap(startOfAnonymousMemory, freeSpaceRoundedUpToPageSize, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED,0,(off_t)0);
is executed and in other one no.
Thanks in advance,
Mariano
On 2010-11-30, at 5:03 PM, David T. Lewis wrote:
On Wed, Dec 01, 2010 at 12:41:44AM +0100, Mariano Martinez Peck wrote:
On Wed, Dec 1, 2010 at 12:11 AM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
On Tue, Nov 30, 2010 at 5:14 PM, David T. Lewis <lewis@mail.msen.com
wrote:
I'm away and cannot check this right now, but if you look in the SqS/VMMaker archive there there are a number of recent updates that may address this problem. See the Montecello update comments for VMMaker-dtl.188, VMMaker-dtl.199, and VMMaker-dtl.200 for summaries. These updates would not be in any of the released VMs at this point, but I have a hunch that they will take care of this problem.
Hi Dave. Ok...after a couple of hours I could compile a new VM for
MacOS
with VMMaker 205 and integrating all my changes :) So....this was something I have to do since several months already
hehhehe
Now, as you guessed, something was related to that. Now, these are the results:
normal:
Smalltalk garbageCollect 481957728 Smalltalk primBytesLeft 5738200
with -memory 1500m
Smalltalk garbageCollect 482093452 Smalltalk primBytesLeft 6444200
mmmmmmm if instead of sending -memory I modify Info.plist and I set 1572864000 (1500gb) then I get
Smalltalk garbageCollect 1518058920 Smalltalk primBytesLeft 5898636
:)
so maybe the mac vm is not taking into acount -memory but it does the
file?
Well that's as good a theory as anything I could have made up ;-)
To be serious, the -memory parameter is part of the unix VM, and other platforms may do things differently. So yes, I think you have found the right explanation.
Dave
--
John M. McIntosh johnmci@smalltalkconsulting.com Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ===========================================================================