summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2011-12-09 10:35:46 +0000
committerSimon Marlow <marlowsd@gmail.com>2011-12-13 08:58:57 +0000
commita02eb298d3f6089e51a43307ffb37e3a8076c8fd (patch)
tree6174e46a959a2449b54e470c8b627e3ba1a277bb /includes
parent55d7931d7fb55865a592f91dfa65435ee2859158 (diff)
downloadhaskell-a02eb298d3f6089e51a43307ffb37e3a8076c8fd.tar.gz
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.
Diffstat (limited to 'includes')
-rw-r--r--includes/rts/Flags.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/includes/rts/Flags.h b/includes/rts/Flags.h
index 439b261fd8..10421f0ee9 100644
--- a/includes/rts/Flags.h
+++ b/includes/rts/Flags.h
@@ -170,6 +170,14 @@ struct PAR_FLAGS {
unsigned int parGcLoadBalancingGen;
/* do load-balancing in this
* generation and higher only */
+
+ unsigned int parGcNoSyncWithIdle;
+ /* if a Capability has been idle for
+ * this many GCs, do not try to wake
+ * it up when doing a
+ * non-load-balancing parallel GC.
+ * (zero disables) */
+
rtsBool setAffinity; /* force thread affinity with CPUs */
};
#endif /* THREADED_RTS */