ghc releasing memory during compilation
Simon Marlow
simonmarhaskell at gmail.com
Thu Mar 16 05:12:19 EST 2006
John Meacham wrote:
> On Mon, Mar 13, 2006 at 04:06:59PM +0300, Bulat Ziganshin wrote:
>
>>SM> I think what you're suggesting is that the runtime should detect the
>>SM> amount of physical memory on the system and auto-tune itself to switch
>>SM> to compacting collection when its residency reaches that amount. This
>>SM> is certainly something we could do. Bear in mind that GHC is not
>>SM> necessarily the only process running on the machine, though, and what
>>SM> about running multiple GHCs?
>>
>>i suggest checking of AVAILABLE physical ram, that is perfectly
>>possible in windows
>
>
> the problem is that available physical ram is wasted ram. any good os
> will never let there be any available ram because it will fill it up
> with disk buffers if nothing else. the only time actual available ram
> appears is when a big application quits, but then it quicky fills up due
> to normal disk activity. determining how much of those buffers/cached
> info you can push out without adversly affecting system performance or
> thrashing is not very easy so at best we get a sort of approximation.
>
> the best solution would be for ghc's garbage collector to periodically
> call getrusage(2) and look at the number of page faults and swaps it is
> causing and switch to compaction when it sees a jump in that. I don't
> know what the equivalent routine on windows would be. not all operating
> systems fill in all the values of getrusage, BSD is the best, linux is
> the worst at this. but on linux you can get similar info from
> /proc/self. (i think it does fill in the values we need in getrusage
> though, I forget which ones it doesn't have)
Nice little project for someone... I've added a task:
http://hackage.haskell.org/trac/ghc/ticket/728
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list