From: Mathieu Desnoyers Date: Wed, 17 Oct 2018 19:41:37 +0000 (-0400) Subject: Fix: sync event enablers before choosing header type X-Git-Tag: v2.12.0-pre~110 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=4ef81e4ac900975a4627ec36e3693ccbce727a62;p=lttng-modules.git Fix: sync event enablers before choosing header type On session start, we should allocate the event IDs before figuring out the number of events per channel and select the proper header type. Without this, the number of events is always perceived to be 0, which selects the "compact" header type. For a channel containing many events (e.g. enable-event -k -a), this selects an inefficient header type. With this fix, it selects the "large" header type, which is more appropriate for a larger number of event IDs. This will lead to a reduced trace throughput for tracing workloads that have many events. Signed-off-by: Mathieu Desnoyers --- diff --git a/lttng-events.c b/lttng-events.c index 3964df5f..f1be6028 100644 --- a/lttng-events.c +++ b/lttng-events.c @@ -226,6 +226,9 @@ int lttng_session_enable(struct lttng_session *session) /* Set transient enabler state to "enabled" */ session->tstate = 1; + /* We need to sync enablers with session before activation. */ + lttng_session_sync_enablers(session); + /* * Snapshot the number of events per channel to know the type of header * we need to use. @@ -239,9 +242,6 @@ int lttng_session_enable(struct lttng_session *session) chan->header_type = 2; /* large */ } - /* We need to sync enablers with session before activation. */ - lttng_session_sync_enablers(session); - /* Clear each stream's quiescent state. */ list_for_each_entry(chan, &session->chan, list) { if (chan->channel_type != METADATA_CHANNEL)