Threads and memory management
Simon Marlow
marlowsd at gmail.com
Mon Apr 27 06:13:26 EDT 2009
On 25/04/2009 13:31, j.waldmann wrote:
> Here is some more data. It seems the behaviour depends on 32/64 bit arch?
>
> #######################################################
>
> waldmann at master:~/tmp$ uname -a
> Linux master 2.6.18-6-amd64 #1 SMP Fri Dec 12 05:49:32 UTC 2008 x86_64
> GNU/Linux
>
> waldmann at master:~/tmp$ time ./Par +RTS -N1
> 496165411
> 496165411
>
> real 0m22.580s
> user 0m22.541s
> sys 0m0.040s
> waldmann at master:~/tmp$ time ./Par +RTS -N2
> 496165411
> 496165411
>
> real 0m21.259s
> user 0m26.678s
> sys 0m0.164s
>
> ########################################################
>
> waldmann at box:~/tmp> uname -a
> Linux box 2.6.27.21-0.1-pae #1 SMP 2009-03-31 14:50:44 +0200 i686 i686 i386
> GNU/Linux
>
> waldmann at box:~/tmp> time ./Par +RTS -N1
> 496165411
> 496165411
>
> real 0m29.802s
> user 0m29.670s
> sys 0m0.028s
> waldmann at box:~/tmp> time ./Par +RTS -N2
> 496165411
> 496165411
>
> real 0m11.219s
> user 0m14.917s
> sys 0m0.164s
This is a very strange result: the user time should not *decrease*, but
rather should stay the same or increase a bit when adding cores. If
your program is GC-bound, then using a 32-bit build will improve
performance, simply because it is shoveling half as much memory around.
Check whether it is GC-bound by using +RTS -sstderr.
Anyway, the current situation is that with GHC 6.10.2 there are a lot of
performance quirks and bottlenecks with respect to parallel programs,
some of which have been squashed in HEAD. Try a recent HEAD snapshot if
you can, or wait for 6.12.1.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list