<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hello Ruoxiang!</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Thank you for your question. It's true that there are no Python bindings examples specific to lttng live (we've provided a brief example below). Unfortunately, the python bindings documentation is currently incomplete, but information about using lttng live
 can be pieced together using the various documentation links below (see Useful Links section).</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Some adjustments typically needed when using lttng live and the Python bindings are:</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted5">
- When referring to a trace source, use a URL (e.g. net://localhost/host/luna/my-session) rather than a file path (e.g. /path/to/trace)<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted4">
- When querying, use the source.ctf.lttng-live component class (rather than the file system class: source.ctf.fs) - source.ctf.lttng-live docs
<a href="https://babeltrace.org/docs/v2.0/man7/babeltrace2-source.ctf.lttng-live.7/" id="LPlnk166863" class="OWAAutoLink">
https://babeltrace.org/docs/v2.0/man7/babeltrace2-source.ctf.lttng-live.7/</a><br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hope this helps!</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Best,</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Erica<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
----</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Useful links</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted6 ContentPasted7">
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted6 ContentPasted7 ContentPasted8">
- Python bindings docs (Installation, Examples) - <a href="https://babeltrace.org/docs/v2.0/python/bt2/index.html" id="LPlnk863113" class="OWAAutoLink">
https://babeltrace.org/docs/v2.0/python/bt2/index.html</a><br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted6 ContentPasted7 ContentPasted8 ContentPasted9">
- LTTng live, General information - <a href="https://lttng.org/docs/v2.13/#doc-lttng-live" id="OWA69c7a002-2312-b1bf-5a16-a57f9c791273" class="OWAAutoLink ContentPasted9">
https://lttng.org/docs/v2.13/#doc-lttng-live</a> (e.g. How to express a live trace source: net://localhost/host/HOSTNAME/my-session)<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted6 ContentPasted7 ContentPasted8 ContentPasted10 ContentPasted11">
- source.ctf.lttng-live component - <a href="https://babeltrace.org/docs/v2.0/man7/babeltrace2-source.ctf.lttng-live.7/" id="LPlnk517979" class="OWAAutoLink">
https://babeltrace.org/docs/v2.0/man7/babeltrace2-source.ctf.lttng-live.7/</a> (C API doc not Python, but can be used to adapt the source.ctf.fs examples by comparing)<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
----<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Quick Example: Trace reading with python bindings and lttng live</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted3">
<span>      </span>Note: This is a local example where the tracing and reading with babeltrace are happening on the same machine (luna).<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
1. REQUIREMENTS</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted2">
Make sure babeltrace is installed with the python plugins and python bindings: <a href="https://babeltrace.org/docs/v2.0/python/bt2/installation.html" id="LPlnk706376" class="OWAAutoLink">
https://babeltrace.org/docs/v2.0/python/bt2/installation.html</a><br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted0">
2. PROCEDURE
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0"></div>
<div class="ContentPasted0"> - Start root session daemon: $sudo lttng-sessiond --daemonize</div>
<div class="ContentPasted0"> - Create live session: $lttng create my-session --live</div>
<div class="ContentPasted0"> - Enable events: $lttng enable-event --kernel sched_switch,sched_process_fork</div>
<div class="ContentPasted0"> - Start tracing: $lttng start</div>
<div class="ContentPasted0 ContentPasted1"> - Run python script: (see below) $python3 lttng-live.py
</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">3. PYTHON SCRIPT<br>
</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">File name: lttng-live.py</div>
<div class="ContentPasted0">File contents:</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0"><span>      </span>import bt2</div>
<div class="ContentPasted0"><span>      </span>import time</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0"><span>      </span>msg_iter = bt2.TraceCollectionMessageIterator('net://localhost/host/luna/my-session') # The hostname (i.e. machine name) is 'luna'</div>
<div class="ContentPasted0"><span>      </span>while True:</div>
<div class="ContentPasted0"><span>      </span>    try:</div>
<div class="ContentPasted0"><span>      </span>        for msg in msg_iter:</div>
<div class="ContentPasted0"><span>      </span>            if type(msg) is bt2._EventMessageConst:</div>
<div class="ContentPasted0"><span>      </span>                print(msg.event.name)</div>
<div class="ContentPasted0"><span>      </span>    except bt2.TryAgain:</div>
<div class="ContentPasted0"><span>      </span>        print('Try again. The iterator has no events to provide right now.')</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0"><span>      </span>    time.sleep(0.5)</div>
<div><br>
</div>
<div><span style="font-size:12pt"></span>
<div style="font-size:12pt" class="ContentPasted12">Reading trace data using the bt2.TraceCollectionMessageIterator and lttng-live:
<span style="font-size:12pt" class="ContentPasted12">When using the message iterator with live, the iterator never ends by default and can be polled for trace data infinitely (hence the while loop in the example). When there is available data, the iterator
 will return it. However, there will not always be data available to consume. When this is the case, the iterator returns a "Try again" exception which must be caught in order to continue polling.</span></div>
</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">4. OUTPUT SNIPPET (Example)<br>
</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0"><span>      </span>erica@luna:~$ python3 lttng-live-example.py</div>
<div class="ContentPasted0"><span>      </span>Try again. The iterator has no events to provide right now.</div>
<div class="ContentPasted0"><span>      </span>Try again. The iterator has no events to provide right now.</div>
<div class="ContentPasted0"><span>      </span>Try again. The iterator has no events to provide right now.</div>
<div class="ContentPasted0"><span>      </span>Try again. The iterator has no events to provide right now.</div>
<div class="ContentPasted0"><span>      </span>Try again. The iterator has no events to provide right now.</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_process_fork</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>sched_switch</div>
<div class="ContentPasted0"><span>      </span>[...]</div>
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> lttng-dev <lttng-dev-bounces@lists.lttng.org> on behalf of LI Ruoxiang via lttng-dev <lttng-dev@lists.lttng.org><br>
<b>Sent:</b> August 3, 2023 12:44 PM<br>
<b>To:</b> lttng-dev@lists.lttng.org <lttng-dev@lists.lttng.org><br>
<b>Subject:</b> [lttng-dev] How to use lttng-live plugin with babeltrace2 python api for live LTTng trace reading?</font>
<div> </div>
</div>
<style type="text/css" style="display:none">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)">Hi there,</span></div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)"><br>
</span></div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)">I am currently involved in a project on designing a Python program for LTTng trace data analysis
 online. The following figure illustrates the program with a live trace data reader using babeltrace2 Python bindings (the yellow box) connected to the LTTng relay daemon. The program will read <span class="x_ContentPasted3" style="display:inline!important; background-color:rgb(255,255,255)">(such
 as periodically)</span> the trace data from the relay daemon and then process them while the LLTng keeps tracing. The above “read” and “process” phases repeat in a loop.</span><br>
</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)"><br>
</span></div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)"><img class="x_ContentPasted1 x_w-1554 x_h-294" id="x_imageSelected0" width="475" height="90" size="51776" style="max-width:100%" data-outlook-trace="F:2|T:2" src="cid:4435d4c9-8a71-4667-bd25-21ef64401df9"><br>
</span></div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)"><br>
</span></div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span class="x_ContentPasted0" style="font-family:Calibri,sans-serif; font-size:14.6667px; text-decoration:none; display:inline!important; color:rgb(33,33,33)">
<p class="x_MsoNormal" style="margin:0cm; font-size:11pt; orphans:auto; widows:auto; text-decoration:none">
<span lang="EN-US" class="x_ContentPasted2">After reading the babeltrace2 documents, examples, and some source code, I found the lttng-live plugin may be an option for reading trace data from LTTng relay daemon. However, I didn't find any examples for using
 lttng-live plugin with babeltrace2 Python bindings. And I wonder if the Python bindings support the mentioned live LTTng trace reading for my case. Is it possible to receive any examples about the usage of babeltrace2’s live reading, if any?</span></p>
<p class="x_MsoNormal" style="margin:0cm; font-size:11pt; orphans:auto; widows:auto; text-decoration:none">
<span lang="EN-US"> </span><span style=""> </span></p>
<p class="x_MsoNormal" style="margin:0cm; font-size:11pt; orphans:auto; widows:auto; text-decoration:none">
<span lang="EN-US" class="x_ContentPasted2">Thank you.</span></p>
<p class="x_MsoNormal" style="margin:0cm; font-size:11pt; orphans:auto; widows:auto; text-decoration:none">
<span lang="EN-US"> </span></p>
<p class="x_MsoNormal" style="margin:0cm; font-size:11pt; orphans:auto; widows:auto; text-decoration:none">
<span lang="EN-US" class="x_ContentPasted2">Best,</span></p>
<p class="x_MsoNormal" style="margin:0cm; font-size:11pt; orphans:auto; widows:auto; text-decoration:none">
<span lang="EN-US" class="x_ContentPasted2">Ruoxiang Li</span></p>
<br>
</span></div>
</div>
</body>
</html>