[MLton-devel] Re: MLton-devel digest, Vol 1 #67 - 10 msgs
Alain Deutsch
deutsch@polyspace.com
Mon, 22 Jul 2002 23:51:02 +0200 (MET DST)
On Mon, 22 Jul 2002 mlton-devel-request@lists.sourceforge.net wrote:
> Message: 6
> Date: Sun, 21 Jul 2002 21:04:25 -0700
> From: Stephen Weeks <sweeks@sweeks.com>
> To: MLton@mlton.org
> Reply-to: MLton@mlton.org
> Subject: [MLton-devel] MM with two mlton apps
>
>
> > However, I think we could do better. A first way would be to do
> > (from ML, first app):
> >
> > 1) call GC()
> > 2) call releaseToSpace()
> > 3) spawn(second app)
> >
> > However, I was wondering if this is really optimal as we only need
> > to call GC in case the mutator has allocated significantly since
> > the last GC.
> >
> > What is your opinion ?
>
> I see two problems to be addressed, of which you mention 1. There may
> be problem of wasting time due to doing doing extra GC, but given that
> you're doing it to avoid paging, I would think doing the GC is almost
> always a win. The second problem is one of memory usage -- even doing
> the GC and releasing to space still holds on to a lot of unused memory
> in from space. Better would be to shrink from space after the GC so
> that the ratio of heap size to live data is only 1.1, say, instead of
> the usual 8. That way, the OS won't have to page out useless parts of
> from space.
>
> So, we could add a function, MLton.GC.pack, with the following behavior.
>
> 1. collect
> 2. releaseToSpace
> 3. shrinkFromSpace
>
> Then you could call pack and spawn. When the parent resumes, it will
> hit the limit and perform another GC very quickly and get back to the
> desired heap size.
>
> As you suggest, this could be improved by avoiding the collect if
> there haven't been many bytes allocated since the last GC -- the GC
> can determine this by comparing frontier and (base + bytesAllocated).
> If that is small enough, then the GC could just do the shrink.
>
> A second improvement would be to avoid doing the GC upon resumption.
> To do this, we could add MLton.GC.unpack, which allocates a heap of
> the desired size and translates the current heap into it. So, you
> would do
>
> 1. pack
> 2. spawn
> 3. unpack
Yes, that would be great !
--
Alain Deutsch, CTO tel.: +33 (0)1 49 65 32 64
PolySpace Technologies fax.: +33 (0)1 49 65 05 77
mailto:deutsch@POLYSPACE.COM http://www.polyspace.com
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
MLton-devel mailing list
MLton-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlton-devel