[lttng-dev] reading context fields causes syscalls
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Wed May 19 14:52:45 EDT 2021
----- On May 19, 2021, at 8:11 AM, lttng-dev lttng-dev at lists.lttng.org wrote:
> Hello,
>
> Several context fields will cause a syscall atleast the first time a
> tracepoint is
> recorded. For example all of the following:
>
> `lttng add-context -c chan --userspace --type=vpid --type=vtid --type=procname`
>
> Each of them seems cached in TLS however, and most should never change
> after startup.
>
> As I am using Lttng over Xenomai, syscalls are strictly forbidden, I
> would like to have some function that prepares all data, which I can
> call on each thread before it switches to realtime work.
>
> Kinda similar to urcu_bp_register_thread, I'd like to have some
> `lttng_ust_warmup_thread` function that fetches the context values
> that can be cached. (urcu_bp_register_thread should be called there
> aswell)
> I considered just doing a tracepoint, but AFAIK the channel can be
> changed/configured after the process is running. So this is not robust
> enough.
The new lttng_ust_init_thread() API in lttng-ust 2.13 would be the right
place to do this I think:
/*
* Initialize this thread's LTTng-UST data structures. There is
* typically no need to call this, because LTTng-UST initializes its
* per-thread data structures lazily, but it should be called explicitly
* upon creation of each thread before signal handlers nesting over
* those threads use LTTng-UST tracepoints.
*/
It would make sense that this new initialization helper also initializes
all contexts which cache the result of a system call. Considering that
contexts can be used from the filter and capture bytecode interpreter, as
well as contexts added to channels, I think we'd need to simply initialize
them all.
Thanks,
Mathieu
>
> regards, Norbert
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list