I'm about to dump 140 patches into HEAD from my parallel GC branch. It's hard to get an overview of what's going in with the long history of this branch, so here's a summary:

 * parallel GC: Use +RTS -g<n> (e.g. +RTS -g2) to run the GC on multiple
   cores.  Automatically enabled with +RTS -N<n>.

 * stack shrinking: if the stack shrinks a long way below its
   high-water-mark, we return some of its memory.

 * Much improved scaling with lots of threads (see #1589)

 * +RTS -s- is shorthand for +RTS -sstderr, and the output has a few more
   interesting stats (e.g. overhead due to slop and fragmentation)

 * a space leak when using par/strategies was fixed (#2185)

 * experimental "mark-region" GC strategy, along the lines of
   http://cs.anu.edu.au/~Steve.Blackburn/pubs/papers/immix-pldi-2008.pdf
   Enabled with +RTS -w.  (implemented while at ISMM/PLDI last week :-)

Doc updates are in progress and will follow shortly.

The paper describing the parallel GC is here:

http://www.haskell.org/~simonmar/bib/parallel-gc-08_abstract.html

In a quick test on my dual-core laptop, using +RTS -g2 saves about 45 seconds out of 12 minutes in a stage3 build (stage2 was unoptimised). This was with a small default heap (-H16m); a larger heap would probably gain more.

Cheers,
        Simon

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to