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