Brandon S. Allbery KF8NH wrote:

On Apr 20, 2008, at 15:41 , Andrew Coppin wrote:

1. Does running the GC force all threads to stop? I know some GC designs do this, but I have no idea how the one GHC implements works.

2. Is the GC still single-threaded? (GHC 6.8.2 here.)

Full GC is single-threaded and stops the entire program, yes. IIRC GHC's runtime tries to do incremental GC to minimize the need for a full GC.

My brain is telling me I've read something somewhere that had in-depth information about GHC's GC implementation - but I can't remember where I saw it... (Maybe the developer wiki? I'll go look there anyway, they might have some interesting goodies.)

Anyway, the sequential version of the program clearly indicates that the thing is doing *a lot* of GC. If the GC sometimes stops the entire program, that could sure limit parallelism real fast... I suppose the only way to know for sure is to turn the heap size up absurdly high so that GC is *never* required, and see what that does. FWIW, I do see higher CPU usage figures with a larger heap...

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to