<div dir="ltr">Response inline.<br><br><div class="gmail_quote"><div dir="ltr">On Thu, Mar 22, 2018 at 12:25 PM Jonathan Rajotte-Julien <<a href="mailto:jonathan.rajotte-julien@efficios.com">jonathan.rajotte-julien@efficios.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Alok,<br>
<br>
On Thu, Mar 22, 2018 at 06:31:41PM +0000, Alok Priyadarshi wrote:<br>
> I am trying to collect a trace for visualizing callstack using<br>
> lttng_ust_cyg_profile.<br>
><br>
> Even though I have compiled a single source file with<br>
> -finstrument-functions, I guess it is producing too many events to<br>
> considerably slow down the instrumented process and cause lost events.<br>
<br>
Did you have a look at [1]. A "fast" shared object is available.<br>
<br>
[1] <a href="https://lttng.org/man/3/lttng-ust-cyg-profile/v2.10/" rel="noreferrer" target="_blank">https://lttng.org/man/3/lttng-ust-cyg-profile/v2.10/</a></blockquote><div><br></div><div>Yes - I tried both - fast and regular. I did not notice any difference.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
> I am using clang, which does not support<br>
> -finstrument-functions-exclude-file-list.<br>
<br>
Might want to give gcc a chance then.<br></blockquote><div><br></div><div>The version of gcc I am using has a bug which produces linker errors for intrinsics when compiled with -finstrument-functions. <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78333">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78333</a></div><div>I will either need to find a gcc version where this bug is fixed or figure out a workaround. Using clang seemed easier, but then it does not support -finstrument-functions-exclude-file-list :|</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> Is there any way to<br>
> filter lttng_ust_cyg_profile events before they are written to the trace? I<br>
> have tried various things:<br>
> 1. lttng-track to only track one process<br>
><br>
> 2. Only enable lttng_ust_cyg_profile:* events<br>
><br>
> 3. Increase the subbuffer size:<br>
> lttng enable-channel --userspace --buffers-pid --subbuf-size=2M<br>
> --num-subbuf=2 mychannel<br>
<br>
Is there any reason you are using --buffer-pid instead of the default per-uid buffering?<br></blockquote><div><br></div><div>No particular reason. I read somewhere in the mailing list that --buffer-pid might be less susceptible to lose events. I can switch back to using the default per-uid buffering if that is better for my usecase.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> Using this option is very flaky however. It crashes lttng-sessiond.<br>
><br>
<br>
We will need the log (lttng-sessiond -vvv) (pastebin) and the version of lttng for this.<br></blockquote><div><br></div><div>OK. I will get you that when I back at work. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Does your workflow looks somewhat similar to this?<br>
<br>
1) Instrumented app is started with relevant LD_PRELOAD<br>
2) lttng create my_session<br>
3) lttng enable-channel -u --subbuf-size=2M --num-subbuf=8 my_channel<br>
4) lttng enable-event -u -c my_channel 'lttng_ust_cyg_profile:*'<br>
5) lttng track -u -p <PID><br>
6) lttng start<br>
... some time pass<br>
7) lttng stop<br>
8) lttng destroy<br>
<br>
If a discarded events warning is reported the solution is to increase either the<br>
size or the number of subbuffers per cpu. Note that the upper limit for the total<br>
subbuffers size is dictated by the available free memory of the system.<br></blockquote><div><br></div><div>Yup - exactly. Except I am using --num-subbuf=2. I have also tried --subbuf-size as 4M and 8M, without much success.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> Any other ideas to filter events?<br>
><br>
> I am also open to explicitly adding tracepoints to the functions I care<br>
> about. But I am not sure how they can be visualized in trace-compass<br>
> callstack view.<br>
<br>
Neither am I, this might be a better question for the tracecompass mailing list.<br></blockquote><div><br></div><div>OK. I will ping the tracecompass mailing list. Is there any tool that can just show events on each thread timeline? I have a multi-threaded application, and I want to just visualize when functions enter/exit on various thread with respect to each other. </div><div><br></div><div>Using lttng_ust_cyg_profile seemed straightforward, but apparently not. Thanks for your help Jonathan.</div></div></div>