Threads and memory management

Simon Marlow marlowsd at gmail.com
Thu Apr 30 06:40:58 EDT 2009


On 28/04/2009 17:25, Johannes Waldmann wrote:
> Thanks for your comments.
>
>
>>   Check whether it is GC-bound by using +RTS -sstderr.
>
> Well yes, it does a lot of GC (there's no way for the compiler
> to optimize away the list of primes) because that was the point
> of the example: to confirm (or disprove)
> that GC hurts parallelism (at the moment).
>
>
>    INIT  time    0.00s  (  0.00s elapsed)
>    MUT   time   13.23s  (  7.98s elapsed)
>    GC    time   14.12s  ( 14.11s elapsed)
>    EXIT  time    0.00s  (  0.00s elapsed)
>    Total time   27.35s  ( 22.09s elapsed)
>
>    %GC time      51.6%  (63.9% elapsed)
>
>
>> Try a recent HEAD snapshot if you can, or wait for 6.12.1.
>
> I did with 6.11.20090425 and it coredumps with  +RTS -N2  (on x86_64)

That's worrying, but I don't see a core dump here.  Here are my results:

GHC 6.11.20090429 -N1:

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time   13.52s  ( 13.64s elapsed)
   GC    time   21.25s  ( 21.23s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time   34.76s  ( 34.87s elapsed)

GHC 6.11.20090429 -N2 -qg0 -qb:

   INIT  time    0.00s  (  0.00s elapsed)
   MUT   time   14.40s  (  7.21s elapsed)
   GC    time   18.35s  (  9.22s elapsed)
   EXIT  time    0.00s  (  0.00s elapsed)
   Total time   32.75s  ( 16.44s elapsed)

which, if I'm not mistaken, is super-linear speedup :-)

Don't forget the -qg0 -qb flags with HEAD, these flags usually give the 
best parallel GC performance at the moment.  For the release this might 
be the default, I still have to do some more experiments.

Cheers,
	Simon


More information about the Glasgow-haskell-users mailing list