Changes to memory allocation (FIX)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Changes to memory allocation (FIX)

Igor Stasenko
 
Hello, remember the problem Tudor has on Win32.
I tracked it down to the #sufficientSpaceAfterGC: method.
It looks like it miscalculating the amount of required space , and so the check

        self oop: freeStart + minFree + 15000 isLessThan: reserveStart

fails after growing the memory.
I am not sure how to correctly calculate the amount of required free
memory, so i just put it in loop,
and grow memory until condition met or no free space available).

However, there are still plenty of memory available & address space.
In my test VM, i raised the limit up to 1Gb
and also modified platform files a little to log the numbers it operating with.
Before the change, opening a large image were lead to low-space
warning which hangs the image.
Now, after change, no low-space warning anymore.

So, here the output:

max available memory space: 1073741824 , reserved now: 422965248
allocated extra memory: 4214784 , total: 427180032
allocated extra memory: 4214784 , total: 431394816
allocated extra memory: 4214784 , total: 435609600
allocated extra memory: 4214784 , total: 439824384
sqMemoryExtraBytesLeft returns: 633917440
allocated extra memory: 5914624 , total: 445739008


Before change it was:

max available memory space: 1073741824 , reserved now: 422965248
allocated extra memory: 4198400 , total: 427163648
allocated extra memory: 4198400 , total: 431362048
allocated extra memory: 4198400 , total: 435560448
allocated extra memory: 4198400 , total: 439758848

The image i tried is one, provided by Tudor (about 412 Mb) - there are
link to download somewhere. It shows a low space warning on startup.

The are no functional changes in attached sqWin32Alloc.c/.h . I put
them here just to show how i got the above numbers output.
(except that i raised an address space limit to 1Gb in header).

--
Best regards,
Igor Stasenko AKA sig.

NewObjectMemory-sufficientSpaceAfterGC.st (1K) Download Attachment
sqWin32Alloc.c (10K) Download Attachment
sqWin32Alloc.h (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Changes to memory allocation (FIX)

johnmci

(a) I'm wondering how this collides with primitiveSetGCBiasToGrow.

(b) I'm sure some windows person said when you set the limit to 1GB
about 10 million Windows computers flip out and die in some strange
manner which is why it's the "safe" 512MB.


On Mon, Jun 6, 2011 at 8:43 AM, Igor Stasenko <[hidden email]> wrote:

>
> Hello, remember the problem Tudor has on Win32.
> I tracked it down to the #sufficientSpaceAfterGC: method.
> It looks like it miscalculating the amount of required space , and so the check
>
>        self oop: freeStart + minFree + 15000 isLessThan: reserveStart
>
> fails after growing the memory.
> I am not sure how to correctly calculate the amount of required free
> memory, so i just put it in loop,
> and grow memory until condition met or no free space available).
>
> However, there are still plenty of memory available & address space.
> In my test VM, i raised the limit up to 1Gb
> and also modified platform files a little to log the numbers it operating with.
> Before the change, opening a large image were lead to low-space
> warning which hangs the image.
> Now, after change, no low-space warning anymore.
>
> So, here the output:
>
> max available memory space: 1073741824 , reserved now: 422965248
> allocated extra memory: 4214784 , total: 427180032
> allocated extra memory: 4214784 , total: 431394816
> allocated extra memory: 4214784 , total: 435609600
> allocated extra memory: 4214784 , total: 439824384
> sqMemoryExtraBytesLeft returns: 633917440
> allocated extra memory: 5914624 , total: 445739008
>
>
> Before change it was:
>
> max available memory space: 1073741824 , reserved now: 422965248
> allocated extra memory: 4198400 , total: 427163648
> allocated extra memory: 4198400 , total: 431362048
> allocated extra memory: 4198400 , total: 435560448
> allocated extra memory: 4198400 , total: 439758848
>
> The image i tried is one, provided by Tudor (about 412 Mb) - there are
> link to download somewhere. It shows a low space warning on startup.
>
> The are no functional changes in attached sqWin32Alloc.c/.h . I put
> them here just to show how i got the above numbers output.
> (except that i raised an address space limit to 1Gb in header).
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
>



--
===========================================================================
John M. McIntosh <[hidden email]>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
===========================================================================
Reply | Threaded
Open this post in threaded view
|

Re: Changes to memory allocation (FIX)

Igor Stasenko

On 7 June 2011 01:53, John McIntosh <[hidden email]> wrote:
>
> (a) I'm wondering how this collides with primitiveSetGCBiasToGrow.
>
the image sets bias to grow flag at startup. so it is not because grow
is disabled.

> (b) I'm sure some windows person said when you set the limit to 1GB
> about 10 million Windows computers flip out and die in some strange
> manner which is why it's the "safe" 512MB.
>
the problem disappears even with 512 Mb.
Since 420Mb < 512Mb :)

>
> On Mon, Jun 6, 2011 at 8:43 AM, Igor Stasenko <[hidden email]> wrote:
>>
>> Hello, remember the problem Tudor has on Win32.
>> I tracked it down to the #sufficientSpaceAfterGC: method.
>> It looks like it miscalculating the amount of required space , and so the check
>>
>>        self oop: freeStart + minFree + 15000 isLessThan: reserveStart
>>
>> fails after growing the memory.
>> I am not sure how to correctly calculate the amount of required free
>> memory, so i just put it in loop,
>> and grow memory until condition met or no free space available).
>>
>> However, there are still plenty of memory available & address space.
>> In my test VM, i raised the limit up to 1Gb
>> and also modified platform files a little to log the numbers it operating with.
>> Before the change, opening a large image were lead to low-space
>> warning which hangs the image.
>> Now, after change, no low-space warning anymore.
>>
>> So, here the output:
>>
>> max available memory space: 1073741824 , reserved now: 422965248
>> allocated extra memory: 4214784 , total: 427180032
>> allocated extra memory: 4214784 , total: 431394816
>> allocated extra memory: 4214784 , total: 435609600
>> allocated extra memory: 4214784 , total: 439824384
>> sqMemoryExtraBytesLeft returns: 633917440
>> allocated extra memory: 5914624 , total: 445739008
>>
>>
>> Before change it was:
>>
>> max available memory space: 1073741824 , reserved now: 422965248
>> allocated extra memory: 4198400 , total: 427163648
>> allocated extra memory: 4198400 , total: 431362048
>> allocated extra memory: 4198400 , total: 435560448
>> allocated extra memory: 4198400 , total: 439758848
>>
>> The image i tried is one, provided by Tudor (about 412 Mb) - there are
>> link to download somewhere. It shows a low space warning on startup.
>>
>> The are no functional changes in attached sqWin32Alloc.c/.h . I put
>> them here just to show how i got the above numbers output.
>> (except that i raised an address space limit to 1Gb in header).
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>>
>
>
>
> --
> ===========================================================================
> John M. McIntosh <[hidden email]>
> Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
> ===========================================================================
>



--
Best regards,
Igor Stasenko AKA sig.