From bd6e2c0bff23dd6d36afc3bccf1d4a0d38b74f40 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 17 Oct 2018 17:16:12 -0400 Subject: [PATCH] Always choose large event header for UST channels MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit UST can receive the session start command before all probe provider library constructors have completed running, therefore finding less events than eventually enabled within the process. Moreover, with per-uid buffers, many processes end up registering events into shared buffers. Therefore, the guess based on number of events from the first process to use the buffer is incorrect. Considering that we typically have applications with more than 30 events, we will modify the session daemon so it selects the "large" header type independently of the number of events. Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- src/bin/lttng-sessiond/ust-app.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index 266022e71..e6b4250c1 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -5394,7 +5394,7 @@ static int reply_ust_register_channel(int sock, int sobjd, int cobjd, size_t nr_fields, struct ustctl_field *fields) { int ret, ret_code = 0; - uint32_t chan_id, reg_count; + uint32_t chan_id; uint64_t chan_reg_key; enum ustctl_channel_header type; struct ust_app *app; @@ -5446,13 +5446,12 @@ static int reply_ust_register_channel(int sock, int sobjd, int cobjd, assert(chan_reg); if (!chan_reg->register_done) { - reg_count = ust_registry_get_event_count(chan_reg); - if (reg_count < 31) { - type = USTCTL_CHANNEL_HEADER_COMPACT; - } else { - type = USTCTL_CHANNEL_HEADER_LARGE; - } - + /* + * TODO: eventually use the registry event count for + * this channel to better guess header type for per-pid + * buffers. + */ + type = USTCTL_CHANNEL_HEADER_LARGE; chan_reg->nr_ctx_fields = nr_fields; chan_reg->ctx_fields = fields; fields = NULL; -- 2.34.1