patch applied (ghc): Use work-stealing for load-balancing in the GC
Simon Marlow
simonmarhaskell at gmail.com
Fri Mar 13 10:54:30 EDT 2009
Fri Mar 13 06:51:16 PDT 2009 Simon Marlow <marlowsd at gmail.com>
* Use work-stealing for load-balancing in the GC
Ignore-this: d05027217c516de3d75f4d1844c860fd
New flag: "+RTS -qb" disables load-balancing in the parallel GC
(though this is subject to change, I think we will probably want to do
something more automatic before releasing this).
To get the "PARGC3" configuration described in the "Runtime support
for Multicore Haskell" paper, use "+RTS -qg0 -qb -RTS".
The main advantage of this is that it allows us to easily disable
load-balancing altogether, which turns out to be important in parallel
programs. Maintaining locality is sometimes more important that
spreading the work out in parallel GC. There is a side benefit in
that the parallel GC should have improved locality even when
load-balancing, because each processor prefers to take work from its
own queue before stealing from others.
M ./includes/RtsFlags.h +1
M ./includes/Storage.h -5
M ./rts/RtsFlags.c +4
M ./rts/Stats.c -1
M ./rts/parallel/WSDeque.c -4
M ./rts/parallel/WSDeque.h -4
M ./rts/sm/GC.c -19 +49
M ./rts/sm/GC.h +2
M ./rts/sm/GCThread.h -4 +6
M ./rts/sm/GCUtils.c -32 +43
M ./rts/sm/GCUtils.h -1 +3
M ./rts/sm/Scav.c -1 +24
M ./rts/sm/Storage.c -1
View patch online:
http://darcs.haskell.org/ghc/_darcs/patches/20090313135116-12142-e2eeeec46f1ed6478f37ef48b426352bd1326f31.gz
More information about the Cvs-ghc
mailing list