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