All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Norbert Lange <nolange79@gmail.com>
Cc: lttng-dev <lttng-dev@lists.lttng.org>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	Xenomai <xenomai@xenomai.org>, paulmck <paulmck@kernel.org>
Subject: Re: [lttng-dev] Using lttng-ust with xenomai
Date: Fri, 22 Nov 2019 14:03:30 -0500 (EST)	[thread overview]
Message-ID: <1007669875.1091.1574449410739.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <CADYdroNGcY6adA5cGTzwzsKqO7+iuWts9k8Haz8k3HSvzQfc=g@mail.gmail.com>

----- On Nov 22, 2019, at 12:55 PM, Norbert Lange nolange79@gmail.com wrote:

>>
>> LTTng-UST prepares the ring buffers from lttng-ust's "listener" thread,
>> which is injected into the process by a lttng-ust constructor.
>>
>> What you will care about is how the tracepoint call-site (within a Xenomai
>> thread) interacts with the ring buffers.
>>
>> The "default" setup for lttng-ust ring buffers is not suitable for Xenomai
>> threads. The lttng-ust ring buffer is split into sub-buffers, each sub-buffer
>> corresponding to a CTF trace "packet". When a sub-buffer is filled, lttng-ust
>> invokes "write(2)" to a pipe to let the consumer daemon know there is data
>> available in that ring buffer. You will want to get rid of that write(2) system
>> call from a Xenomai thread.
>>
>> The proper configuration is to use lttng-enable-channel(1) "--read-timer"
>> option (see https://lttng.org/docs/v2.11/#doc-channel-read-timer). This will
>> ensure that the consumer daemon uses a polling approach to check periodically
>> whether data needs to be consumed within each buffer, thus removing the
>> use of the write(2) system call on the application-side.
> 
> Ah thanks.
> 
> But that's configuration outside of the RT app if I understand this correctly.
> So if one configures a tracer wrong, then the app will suddenly misbehave.
> Would be nice to be able to somehow tell that there is only read-timer allowed.

So an RT application would prohibit tracing to non-RT ring buffers ? IOW, if a
channel is configured without the --read-timer option, nothing would appear from
the RT threads in those buffers.

Should this be per-process or per-thread ?

> 
> 
>>
>> > liburcu has configure options allow forcing the usage of this syscall
>> > but not disabling it, which likely is necessary for Xenomai.
>>
>> I suspect what you'd need there is a way to allow a process to tell
>> liburcu-bp (or liburcu) to always use the fall-back mechanism which does
>> not rely on sys_membarrier. This could be allowed before the first use of
>> the library. I think extending the liburcu APIs to allow this should be
>> straightforward enough. This approach would be more flexible than requiring
>> liburcu to be specialized at configure time. This new API would return an error
>> if invoked with a liburcu library compiled with
>> --disable-sys-membarrier-fallback.
> 
> I was under the impression, that you counted clock-cycles for every operation ;)

Well it's just a new API that allows tweaking the state of a boolean which controls
branches which are already there on the fast-path. ;)

> Not sure, maybe a separate lib for realtime is the better way. Having no option
> can be considered foolproof, and sideeffects of the syscall not working would be
> a real pain.

e.g. a liburcu-bp-rt.so ? That would bring interesting integration challenges with
lttng-ust though. Should we then build a liblttng-ust-rt.so as well ?

Thanks,

Mathieu


-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


  reply	other threads:[~2019-11-22 19:03 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CADYdroN-i9yrpd-wjPSW36GUptRV+kOCJT=Yv6+Z5sCVBmo_SQ@mail.gmail.com>
2019-11-22 15:42 ` Using lttng-ust with xenomai Mathieu Desnoyers
2019-11-22 15:42 ` [lttng-dev] " Mathieu Desnoyers
2019-11-22 15:52   ` Jan Kiszka
2019-11-22 17:01     ` Mathieu Desnoyers
2019-11-22 17:36       ` Jan Kiszka
2019-11-22 17:36       ` [lttng-dev] " Jan Kiszka
2019-11-22 17:01     ` Mathieu Desnoyers
2019-11-22 17:44     ` [lttng-dev] " Norbert Lange
2019-11-22 17:52       ` Jan Kiszka
2019-11-22 17:52       ` [lttng-dev] " Jan Kiszka
2019-11-22 18:01         ` Norbert Lange
2019-11-22 18:01         ` [lttng-dev] " Norbert Lange
2019-11-22 18:07           ` Jan Kiszka
2019-11-22 21:38             ` Norbert Lange
2019-11-22 21:38             ` [lttng-dev] " Norbert Lange
2019-11-22 18:07           ` Jan Kiszka
2019-11-22 19:00       ` [lttng-dev] " Mathieu Desnoyers
2019-11-22 19:57         ` Norbert Lange
2019-11-22 20:15           ` Mathieu Desnoyers
2019-11-22 20:15           ` [lttng-dev] " Mathieu Desnoyers
2019-11-22 21:27             ` Norbert Lange via Xenomai
2019-11-22 21:27               ` Norbert Lange
2019-11-22 19:57         ` Norbert Lange
2019-11-22 19:00       ` Mathieu Desnoyers
2019-11-22 17:44     ` Norbert Lange
2019-11-22 15:52   ` Jan Kiszka
2019-11-22 17:55   ` Norbert Lange
2019-11-22 17:55   ` [lttng-dev] " Norbert Lange
2019-11-22 19:03     ` Mathieu Desnoyers [this message]
2019-11-22 20:04       ` Norbert Lange
2019-11-22 20:04       ` Norbert Lange
2019-11-22 19:03     ` Mathieu Desnoyers

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=1007669875.1091.1574449410739.JavaMail.zimbra@efficios.com \
    --to=mathieu.desnoyers@efficios.com \
    --cc=jan.kiszka@siemens.com \
    --cc=lttng-dev@lists.lttng.org \
    --cc=nolange79@gmail.com \
    --cc=paulmck@kernel.org \
    --cc=xenomai@xenomai.org \
    /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.