
On 23 April 2005 20:12, Jan-Willem Maessen wrote:
Hmm; this sounds like a lot of full-heap collections, which is exactly what generational GC is trying to avoid. A very large old generation (like, say, 500+Mb) might help a lot in this instance; I have no idea how GHC decides generation sizes. It might also help to set a very large allocation area to reduce promotion rate to the second generation, and give the gobs of transient data some time to die---or, similarly, to increase the number of generations to increase the time it takes things to get to the old generation. Fundamentally, though, when you run really close to your memory limits GC tends to be unhappy.
For a program with this much data, GHC's default allocation area size of 256k is pretty small. In fact, it's pretty small full stop - I recently bumped it to 512k. I suggest trying -A1m at least. I'd be interested to know whether you get better results by tweaking any of the other GC settings: more generatsions and more steps in particular. Cheers, Simon
participants (1)
-
Simon Marlow