diff options
author | Simon Marlow <marlowsd@gmail.com> | 2009-03-17 16:42:14 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2009-03-17 16:42:14 +0000 |
commit | 8b18faef8aeaf40150c208272a2fc117611e8ae8 (patch) | |
tree | 2aabc6115dccd0a3e303320515564b5628c8771c /mk | |
parent | f8f4cb3f3a46e0495917a927cefe906531b7b38e (diff) | |
download | haskell-8b18faef8aeaf40150c208272a2fc117611e8ae8.tar.gz |
Add fast event logging
Generate binary log files from the RTS containing a log of runtime
events with timestamps. The log file can be visualised in various
ways, for investigating runtime behaviour and debugging performance
problems. See for example the forthcoming ThreadScope viewer.
New GHC option:
-eventlog (link-time option) Enables event logging.
+RTS -l (runtime option) Generates <prog>.eventlog with
the binary event information.
This replaces some of the tracing machinery we already had in the RTS:
e.g. +RTS -vg for GC tracing (we should do this using the new event
logging instead).
Event logging has almost no runtime cost when it isn't enabled, though
in the future we might add more fine-grained events and this might
change; hence having a link-time option and compiling a separate
version of the RTS for event logging. There's a small runtime cost
for enabling event-logging, for most programs it shouldn't make much
difference.
(Todo: docs)
Diffstat (limited to 'mk')
-rw-r--r-- | mk/config.mk.in | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/mk/config.mk.in b/mk/config.mk.in index bdaed164d5..ae961bbd68 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -385,8 +385,11 @@ endif # thr_debug_p : debugging threaded profiled # t : ticky-ticky profiling # debug_t : debugging ticky-ticky profiling +# l : event logging +# thr_l : threaded and event logging +# thr_debug_l : threaded and debugging and event logging # -GhcRTSWays= +GhcRTSWays=l # Usually want the debug version ifeq "$(BootingFromHc)" "NO" @@ -400,7 +403,8 @@ endif # Want the threaded versions unless we're unregisterised # Defer the check until later by using $(if..), because GhcUnregisterised might # be set in build.mk, which hasn't been read yet. -GhcRTSWays += $(if $(findstring NO, $(GhcUnregisterised)),thr thr_p thr_debug,) +GhcRTSWays += $(if $(findstring NO, $(GhcUnregisterised)),thr thr_debug thr_l,) +GhcRTSWays += $(if $(findstring p, $(GhcLibWays)),thr_p,) # We can only build GHCi threaded if we have a threaded RTS: GhcThreaded = $(if $(findstring thr,$(GhcRTSWays)),YES,NO) @@ -1248,6 +1252,10 @@ WAY_p_HC_OPTS= -prof WAY_t_NAME=ticky-ticky profiling WAY_t_HC_OPTS= -ticky +# Way 'l': +WAY_l_NAME=event logging +WAY_l_HC_OPTS= -eventlog + # Way `mp': WAY_mp_NAME=parallel WAY_mp_HC_OPTS=-parallel @@ -1268,6 +1276,10 @@ WAY_thr_HC_OPTS=-optc-DTHREADED_RTS WAY_thr_p_NAME=threaded profiled WAY_thr_p_HC_OPTS=-optc-DTHREADED_RTS -prof +# Way 'thr_l': +WAY_thr_l_NAME=threaded event logging +WAY_thr_l_HC_OPTS=-optc-DTHREADED_RTS -eventlog + # Way 'debug': WAY_debug_NAME=debug WAY_debug_HC_OPTS=-optc-DDEBUG @@ -1288,6 +1300,10 @@ WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG WAY_thr_debug_p_NAME=threaded debug profiling WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof +# Way 'thr_debug_l': +WAY_thr_debug_l_NAME=threaded debug event logging +WAY_thr_debug_l_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -eventlog + # Way 'dyn': build dynamic shared libraries WAY_dyn_NAME=dyn WAY_dyn_HC_OPTS=-fPIC -dynamic |