diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-12-16 12:21:46 -0500 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-02-27 07:58:57 -0500 |
commit | 98dd09afdebe8d5b6def4c3b11a4c0495df47de4 (patch) | |
tree | cecfb9edd7b797a2f71a0e443309df746f61a81f /rts/RtsFlags.c | |
parent | a9f23793126251844944e00bca8e84370c759aa7 (diff) | |
download | haskell-98dd09afdebe8d5b6def4c3b11a4c0495df47de4.tar.gz |
rts: Introduce --eventlog-flush-interval flag
This introduces a flag, --eventlog-flush-interval, which can be used to
set an upper bound on the amount of time for which an eventlog event
will remain enqueued. This can be useful in real-time monitoring
settings.
Diffstat (limited to 'rts/RtsFlags.c')
-rw-r--r-- | rts/RtsFlags.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index 380ccc3afc..42a4490e9b 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -238,6 +238,7 @@ void initRtsFlagsDefaults(void) RtsFlags.TraceFlags.user = false; RtsFlags.TraceFlags.ticky = false; RtsFlags.TraceFlags.trace_output = NULL; + RtsFlags.TraceFlags.eventlogFlushTime = 0; #endif #if defined(PROFILING) @@ -978,6 +979,16 @@ error = true; printRtsInfo(rtsConfig); stg_exit(0); } + else if (strequal("eventlog-flush-interval=", + &rts_argv[arg][2])) { + OPTION_SAFE; + double intervalSeconds = parseDouble(rts_argv[arg]+26, &error); + if (error) { + errorBelch("bad value for --eventlog-flush-interval"); + } + RtsFlags.TraceFlags.eventlogFlushTime = + fsecondsToTime(intervalSeconds); + } else if (strequal("copying-gc", &rts_argv[arg][2])) { OPTION_SAFE; @@ -1803,6 +1814,14 @@ static void normaliseRtsOpts (void) RtsFlags.ProfFlags.heapProfileIntervalTicks = 0; } + if (RtsFlags.TraceFlags.eventlogFlushTime > 0) { + RtsFlags.TraceFlags.eventlogFlushTicks = + RtsFlags.TraceFlags.eventlogFlushTime / + RtsFlags.MiscFlags.tickInterval; + } else { + RtsFlags.TraceFlags.eventlogFlushTicks = 0; + } + if (RtsFlags.GcFlags.stkChunkBufferSize > RtsFlags.GcFlags.stkChunkSize / 2) { errorBelch("stack chunk buffer size (-kb) must be less than 50%%\n" |