summaryrefslogtreecommitdiff
path: root/includes/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2016-04-24 21:31:55 +0100
committerSimon Marlow <smarlow@fb.com>2016-05-04 05:30:30 -0700
commitf703fd6b50f0ae58bc5f5ddb927a2ce28eeaddf6 (patch)
tree354f1ae4f9dd047c2f1f12f25e00d34ee7797e30 /includes/rts
parent76ee260778991367b8dbf07ecf7afd31f826c824 (diff)
downloadhaskell-f703fd6b50f0ae58bc5f5ddb927a2ce28eeaddf6.tar.gz
Add +RTS -AL<size>
+RTS -AL<size> controls the total size of large objects that can be allocated before a GC is triggered. Previously this was always just the value of -A, and the limit mainly existed to prevent runaway allocation in pathalogical programs that allocate a lot of large objects. However, since the limit is shared between all cores, on a large multicore the default becomes more restrictive, and can end up triggering GC well before it would normally have been. Arguably a better default would be A*N, but this is probably excessive. Adding a flag lets you choose, and I've left the default as it was. See docs for usage.
Diffstat (limited to 'includes/rts')
-rw-r--r--includes/rts/Flags.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/includes/rts/Flags.h b/includes/rts/Flags.h
index 16417ce34e..d3bc001ca1 100644
--- a/includes/rts/Flags.h
+++ b/includes/rts/Flags.h
@@ -41,6 +41,7 @@ typedef struct _GC_FLAGS {
nat maxHeapSize; /* in *blocks* */
nat minAllocAreaSize; /* in *blocks* */
+ nat largeAllocLim; /* in *blocks* */
nat nurseryChunkSize; /* in *blocks* */
nat minOldGenSize; /* in *blocks* */
nat heapSizeSuggestion; /* in *blocks* */