From edbf51ab0ca99ceb6c42bc61b71f876e31fc6b30 Mon Sep 17 00:00:00 2001 From: Ben Gamari <bgamari.foss@gmail.com> Date: Thu, 12 Sep 2013 23:20:06 -0400 Subject: [PATCH] rts: Set default maximum stack size to 80% of physical memory --- rts/RtsFlags.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index bf924c25f746..12bb44ce98cc 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -13,6 +13,7 @@ #include "RtsUtils.h" #include "Profiling.h" #include "RtsFlags.h" +#include "sm/OSMem.h" #ifdef HAVE_CTYPE_H #include <ctype.h> @@ -93,10 +94,15 @@ static void errorRtsOptsDisabled(HsBool is_hs_main, const char *s); void initRtsFlagsDefaults(void) { + StgWord64 maxStkSize = 8 * getPhysicalMemorySize() / 10; + // if getPhysicalMemorySize fails just move along with an 8MB limit + if (maxStkSize == 0) + maxStkSize = (8 * 1024 * 1024) / sizeof(W_); + RtsFlags.GcFlags.statsFile = NULL; RtsFlags.GcFlags.giveStats = NO_GC_STATS; - RtsFlags.GcFlags.maxStkSize = (8 * 1024 * 1024) / sizeof(W_); + RtsFlags.GcFlags.maxStkSize = maxStkSize; RtsFlags.GcFlags.initialStkSize = 1024 / sizeof(W_); RtsFlags.GcFlags.stkChunkSize = (32 * 1024) / sizeof(W_); RtsFlags.GcFlags.stkChunkBufferSize = (1 * 1024) / sizeof(W_); -- GitLab