[lttng-dev] [PATCH lttng-tools] Always choose large event header for UST channels
Jérémie Galarneau
jeremie.galarneau at efficios.com
Tue Oct 30 08:46:52 EDT 2018
Merged in master, stable-2.11, stable-2.10 and stable-2.9.
Thanks!
Jérémie
On Wed, 17 Oct 2018 at 23:16, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
>
> 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 <mathieu.desnoyers at efficios.com>
> ---
> 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 2a810aba..a133eeee 100644
> --- a/src/bin/lttng-sessiond/ust-app.c
> +++ b/src/bin/lttng-sessiond/ust-app.c
> @@ -5429,7 +5429,7 @@ static int reply_ust_register_channel(int sock, 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;
> @@ -5481,13 +5481,12 @@ static int reply_ust_register_channel(int sock, 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.11.0
>
--
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list