<div dir="ltr">Hi Daniel,<div>I had spend sometime and compiled</div><div>Non-Instrumented app with static instrumented library</div><div>Non-Instrumented app with dynamic instrumented library<br></div><div>Instrumented app with static instrumented library<br>
</div><div>Instrumented app with dynamic instrumented library<br></div><div><div><br class="">Thanks for your help.</div></div><div><br></div><div>- It doest matter if the tracepoints are static or dynamically loaded with the app. Once there is a change in tracepoints the app should be reloaded (even though not compiled). Even though the tracepoints can be shared, but changing tracepoints we would need to restart all the app's which share the tracepoints.</div>
<div>(Just trying to make a statement on procs and cons here)</div><div><br></div><div><div><br></div><div>- * Does static or dynamic inclusion make difference(in terms of performance) if someone always want to run in tracing mode??</div>
<div><br></div></div><div>Now let me put some light on how someone would like to use lttngin huge codebases. (this is my personal opinion)<br></div><div>- Normally tracepoints are made per component/daemon. And not shared across daemons/components.</div>
<div>- Tracing should always be running. It should never be switched off. (unless the application is not mission critical)</div><div>- I'm planning to always run memory(snapshot) tracing with some fixed size buffer, which can capture last n-events or n-bytes</div>
<div>- Above memory tracing users can create another tracing session and dump traces to files if needed.(with their own filters and context in enable-event)</div><div><br></div><div><br></div><div>Thanks again for spending your time on these queries.</div>
<div>-Anand Neeli</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Apr 7, 2014 at 6:53 PM, Thibault, Daniel <span dir="ltr"><<a href="mailto:Daniel.Thibault@drdc-rddc.gc.ca" target="_blank">Daniel.Thibault@drdc-rddc.gc.ca</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="FR-CA" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   You need to define your concept of operations carefully.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   An instrumented application can include its tracepoint provider in several ways.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   One is static inclusion: the application will always be traceable, but any change to the tracepoints requires a recompilation of the app, plus the tracepoint
 events it produces should not be shared with any other application (I say ‘should’ because they can, but it’s a bad idea to do so).<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   Another is dynamic inclusion with static awareness: the application will always be traceable, but will refuse to run if does not find the tracepoint provider
 library (typically provided by LD_PRELOAD). The tracepoint events can be shared with other applications.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   The third is dynamic inclusion without static awareness: this operates as the previous, except that when the app does not find the tracepoint provider it
 runs normally but is not traceable. Turning off traceability in this way does give you a very small gain in performance.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   The last is fully dynamic inclusion: the app is responsible for its own traceability because it loads and unloads its tracepoint provider itself (using dlopen
 and dlclose). This is more intrusive as the app’s code needs to include this aspect, possibly reflected in its user interface (by a menu item, for instance). On the good side it does mean you get the slight performance gain on demand.<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d">   If the very slight loss of performance due to tracing doesn’t bother you, your best bet is probably dynamic inclusion without static awareness (third option).
 LTTng can then be configured to capture your app’s traces using an on-disc circular buffer (see the tracefile-size and tracefile-count options of the enable-channel command). When your app misbehaves, you suspend it, suspend tracing (lttng stop), and copy
 the trace to a working directory. You can then babeltrace it or use the Eclipse LTTng views to analyse the trace. This works even better if your app is run multiple times, because then LTTng will capture each running separately (see the buffers-pid and buffers-uid
 options of the enable-channel command). You only need to remember to flush the older traces once you’ve decided you don’t need them anymore.<u></u><u></u></span></p><div class="">
<p class="MsoNormal"><span lang="EN-CA" style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Consolas;color:#1f497d">Daniel U. Thibault<br>
Protection des systèmes et contremesures (PSC) | Systems Protection & Countermeasures (SPC)<br>
Cyber sécurité pour les missions essentielles (CME) | Mission Critical Cyber Security (MCCS)<br>
R & D pour la défense Canada - Valcartier (RDDC Valcartier) | Defence R&D Canada - Valcartier (DRDC Valcartier)<br>
2459 route de la Bravoure<br>
Québec QC  G3J 1X5<br>
CANADA<br>
Vox</span><span style="font-size:10.5pt;font-family:Consolas;color:#1f497d"> </span><span style="font-size:11.0pt;font-family:Consolas;color:#1f497d">: (418) 844-4000 x4245<br>
Fax</span><span style="font-size:10.5pt;font-family:Consolas;color:#1f497d"> </span><span style="font-size:11.0pt;font-family:Consolas;color:#1f497d">: (418) 844-4538<br>
</span><span style="font-size:11.0pt;font-family:Consolas;color:#1f497d">NAC : </span>
<span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><a href="http://www.travelgis.com/map.asp?addr=918V%20QSDJ" target="_blank"><span lang="FR-CA" style="font-size:10.0pt;font-family:"Courier New"">918V QSDJ</span></a></span><span lang="EN-CA" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><</span><u><span style="font-size:10.0pt;font-family:"Courier New";color:blue"><a href="http://www.travelgis.com/map.asp?addr=918V%20QSDJ" target="_blank">http://www.travelgis.com/map.asp?addr=918V%20QSDJ</a></span></u><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">></span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><br>

</span><span style="font-size:11.0pt;font-family:Consolas;color:#1f497d">Gouvernement du Canada | Government of Canada<br>
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><</span><span lang="EN-CA" style="font-size:10.0pt;font-family:"Courier New";color:blue"><a href="http://www.valcartier.drdc-rddc.gc.ca/" target="_blank"><span lang="FR-CA">http://www.valcartier.drdc-rddc.gc.ca/</span></a></span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">></span><span style="font-size:10.5pt;font-family:Consolas;color:#1f497d"><u></u><u></u></span></p>

</div></div>
</div>

</blockquote></div><br></div>