From: Mathieu Desnoyers via lttng-dev <lttng-dev@lists.lttng.org>
To: Norbert Lange <nolange79@gmail.com>
Cc: lttng-dev <lttng-dev@lists.lttng.org>
Subject: Re: [lttng-dev] reading context fields causes syscalls
Date: Wed, 19 May 2021 14:52:45 -0400 (EDT) [thread overview]
Message-ID: <217443874.51651.1621450365666.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <CADYdroN3=pAe66crtsVT9aHE4T+bT61-tvHFKCuwZYkHhuyFjw@mail.gmail.com>
----- On May 19, 2021, at 8:11 AM, lttng-dev lttng-dev@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@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
next prev parent reply other threads:[~2021-05-19 18:52 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-19 12:11 [lttng-dev] reading context fields causes syscalls Norbert Lange via lttng-dev
2021-05-19 18:52 ` Mathieu Desnoyers via lttng-dev [this message]
2021-05-20 12:46 ` Norbert Lange via lttng-dev
2021-05-20 13:28 ` Mathieu Desnoyers via lttng-dev
2021-05-20 13:42 ` Norbert Lange via lttng-dev
2021-05-20 14:15 ` Mathieu Desnoyers via lttng-dev
2022-07-14 13:10 ` Norbert Lange via lttng-dev
2022-07-18 15:46 ` Mathieu Desnoyers via lttng-dev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=217443874.51651.1621450365666.JavaMail.zimbra@efficios.com \
--to=lttng-dev@lists.lttng.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=nolange79@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.