New flag +RTS -qi<n>, avoid waking up idle Capabilities to do parallel GC
authorSimon Marlow <marlowsd@gmail.com>
Fri, 9 Dec 2011 10:35:46 +0000 (10:35 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 13 Dec 2011 08:58:57 +0000 (08:58 +0000)
commita02eb298d3f6089e51a43307ffb37e3a8076c8fd
tree6174e46a959a2449b54e470c8b627e3ba1a277bb
parent55d7931d7fb55865a592f91dfa65435ee2859158
New flag +RTS -qi<n>, avoid waking up idle Capabilities to do parallel GC

This is an experimental tweak to the parallel GC that avoids waking up
a Capability to do parallel GC if we know that the capability has been
idle for a (tunable) number of GC cycles.  The idea is that if you're
only using a few Capabilities, there's no point waking up the ones
that aren't busy.

e.g. +RTS -qi3

says "A Capability will participate in parallel GC if it was running
at all since the last 3 GC cycles."

Results are a bit hit and miss, and I don't completely understand why
yet.  Hence, for now it is turned off by default, and also not
documented except in the +RTS -? output.
includes/rts/Flags.h
rts/Capability.c
rts/Capability.h
rts/RtsFlags.c
rts/Schedule.c
rts/sm/GC.c
rts/sm/GCThread.h