From: Mathieu Desnoyers Date: Wed, 17 Oct 2018 21:16:12 +0000 (-0400) Subject: Always choose large event header for UST channels X-Git-Tag: v2.9.11~10 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=4d3350dd504d64cb10770c683848afd04a5817ea;p=lttng-tools.git Always choose large event header for UST channels 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 --- diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index ee78327ef..1caaf55cf 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -5324,7 +5324,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; @@ -5376,13 +5376,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;