[commit: ghc] master: Only trace cap/capset events if we're tracing anything else (d1fe08e)
git at git.haskell.org
git at git.haskell.org
Wed Aug 3 07:07:54 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/d1fe08ec15230d5a6c3025ef798a8c911d2fa1c7/ghc
>---------------------------------------------------------------
commit d1fe08ec15230d5a6c3025ef798a8c911d2fa1c7
Author: Simon Marlow <marlowsd at gmail.com>
Date: Tue Aug 2 09:57:19 2016 +0100
Only trace cap/capset events if we're tracing anything else
Summary:
I was getting annoyed by cap/capset messages when using +RTS -DS, which
doesn't cause any other trace messages to be emitted. This makes it
possible to add --with-rtsopts=-DS when running tests, and not have all
the tests fail due to spurious trace messages.
Test Plan: validate
Reviewers: duncan, bgamari, ezyang, austin, erikd
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2438
>---------------------------------------------------------------
d1fe08ec15230d5a6c3025ef798a8c911d2fa1c7
rts/Trace.c | 19 ++++++++++++++-----
rts/Trace.h | 25 +++++++++++++++----------
2 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/rts/Trace.c b/rts/Trace.c
index fdf8049..0dc05d5 100644
--- a/rts/Trace.c
+++ b/rts/Trace.c
@@ -51,6 +51,7 @@ int TRACE_gc;
int TRACE_spark_sampled;
int TRACE_spark_full;
int TRACE_user;
+int TRACE_cap;
#ifdef THREADED_RTS
static Mutex trace_utx;
@@ -114,6 +115,14 @@ void initTracing (void)
TRACE_user =
RtsFlags.TraceFlags.user;
+ // We trace cap events if we're tracing anything else
+ TRACE_cap =
+ TRACE_sched ||
+ TRACE_gc ||
+ TRACE_spark_sampled ||
+ TRACE_spark_full ||
+ TRACE_user;
+
eventlog_enabled = RtsFlags.TraceFlags.tracing == TRACE_EVENTLOG;
/* Note: we can have any of the TRACE_* flags turned on even when
@@ -378,8 +387,8 @@ void traceEventGcStats_ (Capability *cap,
}
}
-void traceCapEvent (Capability *cap,
- EventTypeNum tag)
+void traceCapEvent_ (Capability *cap,
+ EventTypeNum tag)
{
#ifdef DEBUG
if (RtsFlags.TraceFlags.tracing == TRACE_STDERR) {
@@ -410,9 +419,9 @@ void traceCapEvent (Capability *cap,
}
}
-void traceCapsetEvent (EventTypeNum tag,
- CapsetID capset,
- StgWord info)
+void traceCapsetEvent_ (EventTypeNum tag,
+ CapsetID capset,
+ StgWord info)
{
#ifdef DEBUG
if (RtsFlags.TraceFlags.tracing == TRACE_STDERR && TRACE_sched)
diff --git a/rts/Trace.h b/rts/Trace.h
index ab79671..8b531f1 100644
--- a/rts/Trace.h
+++ b/rts/Trace.h
@@ -69,6 +69,7 @@ extern int TRACE_gc;
extern int TRACE_spark_sampled;
extern int TRACE_spark_full;
/* extern int TRACE_user; */ // only used in Trace.c
+extern int TRACE_cap;
// -----------------------------------------------------------------------------
// Posting events
@@ -244,19 +245,23 @@ void traceThreadStatus_ (StgTSO *tso);
/*
* Events for describing capabilities and capability sets in the eventlog
- *
- * Note: unlike other events, these are not conditional on TRACE_sched or
- * similar because capabilities and capability sets are important
- * context for other events. Since other events depend on these events
- * then for simplicity we always emit them, rather than working out if
- * they're necessary . They should be very low volume.
*/
-void traceCapEvent (Capability *cap,
+#define traceCapEvent(cap, tag) \
+ if (RTS_UNLIKELY(TRACE_cap)) { \
+ traceCapEvent_(cap, tag); \
+ }
+
+void traceCapEvent_ (Capability *cap,
EventTypeNum tag);
-void traceCapsetEvent (EventTypeNum tag,
- CapsetID capset,
- StgWord info);
+#define traceCapsetEvent(cap, capset, info) \
+ if (RTS_UNLIKELY(TRACE_cap)) { \
+ traceCapsetEvent_(cap, capset, info); \
+ }
+
+void traceCapsetEvent_ (EventTypeNum tag,
+ CapsetID capset,
+ StgWord info);
void traceWallClockTime_(void);
More information about the ghc-commits
mailing list