<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Oct 20, 2014 at 7:48 PM, Boisvert, Sebastien <span dir="ltr"><<a href="mailto:boisvert@anl.gov" target="_blank">boisvert@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">> From: Eugene Ivanov [<a href="mailto:eiva@tbricks.com">eiva@tbricks.com</a>]<br>
> Sent: Monday, October 20, 2014 6:01 AM<br>
> To: Boisvert, Sebastien<br>
> Cc: <a href="mailto:lttng-dev@lists.lttng.org">lttng-dev@lists.lttng.org</a><br>
> Subject: Re: [lttng-dev] Best way to analyze CTF files<br>
><br>
><br>
><br>
> Hi Sebastian,<br>
<br>
*Sebastien* or *Sébastien*<br></blockquote><div><br></div><div>Oops, I'm sorry, Sebastien.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
><br>
> In our company one of the main lttng applications is to measure latency between two probes which get same ID as argument.<br>
<br>
We do the same thing with LTTng (our ID is called message_number, and every actor message carries one):<br>
<br>
> For this purpose we've implemented in C a special utility which is based on libraries to read CTF (IIRC). Also some developers often<br>
>  use own simple perl scripts to analyze babeltrace output.<br>
<br>
In our system, messages are sent by actors (like Erlang processes, but in C 1999 for throughput).<br>
<br>
We ended up using LTTng's powerful real-time filtering engine to filter only messages<br>
for a single actor:<br>
<br>
lttng enable-event --userspace thorium_message:* --filter "message_source_actor == 1001563"<br>
<br>
<br>
Then we are simply just looking at individual messages (LTTng provides us with the delivery path of<br>
every actor message for the selected actor):<br>
<br>
[boisvert@bigmem biosal]$ cat trace.txt | grep "message_number = 99,"|awk '{print $4" "$2}'<br>
thorium_message:actor_send: (+0.003747706)<br>
thorium_message:worker_send: (+0.000001442)<br>
thorium_message:worker_enqueue_message: (+0.000001257)<br>
thorium_message:worker_publish_message: (+0.000000976)<br>
thorium_message:worker_pool_dequeue: (+0.003363601)<br>
thorium_message:node_send: (+0.000001483)<br>
thorium_message:node_send_system: (+0.000001349)<br>
thorium_message:transport_send: (+0.000001040)<br>
thorium_message:node_receive: (+0.000073889)<br>
thorium_message:node_dispatch_message: (+0.000001891)<br>
thorium_message:worker_pool_enqueue: (+0.000001696)<br>
thorium_message:worker_receive: (+0.000001774)<br>
thorium_message:actor_receive: (+0.000002841)<br>
<br>
<br>
> I wish there is a better way to implement custom CTF analyzers, probably some basic DSL.<br>
<br>
I think that an approach that would be efficient would be to just import everything in<br>
sqlite. Otherwise, I think that filtering is good since it does generates files that are too large.<br>
<br>
Without filtering, our HPC app (supercomputing, not cloud) generates ~30 GiB worth of<br>
LTTng CTF data in 2 minutes with only 4 Thorium nodes (~ 30 x86-64 cores).<br>
In production, we are using<br>
~6000 x86 cores on a Cray XE6 for ~20 minutes and ~30000 POWER cores (A2) for ~ 20 minutes.<br>
So LTTng's builtin filter is really our only option IMO.<br></blockquote><div><br></div><div>I see.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
><br>
><br>
><br>
> On Sat, Oct 18, 2014 at 2:23 AM, Boisvert, Sebastien<br>
> <<a href="mailto:boisvert@anl.gov">boisvert@anl.gov</a>> wrote:<br>
><br>
> Bonjour,<br>
><br>
> First, thank you for LTTng-UST. This is very useful and convenient.<br>
><br>
> I just got started today using LTTng (LTTng-UST) for tracing a HPC application<br>
> that I am working on (I am a postdoc). I am impressed by how easy LTTng is to use it.<br>
><br>
> In my system, an actor message is represented by a pair<br>
> <message_actor_source, message_number>.<br>
><br>
> I want to list all messages that have a high delivery time (message:actor_receive - message:actor_send).<br>
><br>
> I am doing this to get the messages of one actor (actor 1000019):<br>
><br>
> [boisvert@bigmem biosal]$ babeltrace ~/lttng-traces/auto-20141017-181240|grep "message_source_actor = 1000019"  > actor_1000019<br>
><br>
> Then, I can look at one message with (message <1000019, 14>):<br>
><br>
> [boisvert@bigmem biosal]$ grep "message_number = 14," actor_1000019<br>
> [18:12:43.647017211] (+0.000005110)<br>
> <a href="http://bigmem.knoxville.kbase.us" target="_blank">bigmem.knoxville.kbase.us</a> message:actor_send: { cpu_id = 30 }, { message_number = 14, message_action = 31592, message_count = 8, message_source_actor = 1000019, message_destination_actor = 1000059, message_source_node = -1, message_destination_node = -1<br>
>  }<br>
> [18:12:43.647025249] (+0.000002860)<br>
> <a href="http://bigmem.knoxville.kbase.us" target="_blank">bigmem.knoxville.kbase.us</a> message:actor_receive: { cpu_id = 49 }, { message_number = 14, message_action = 31592, message_count = 8, message_source_actor = 1000019, message_destination_actor = 1000059, message_source_node = 3, message_destination_node =<br>
>  3 }<br>
><br>
> If I substract the times:<br>
><br>
> irb(main):003:0> (43.647025249-43.647017211)*10**9<br>
> => 8038.00000426236<br>
><br>
> This message (<1000019, 14>) required 8038 ns for the delivery. This one is fine.<br>
><br>
><br>
> So basically my question is:<br>
><br>
> Is there an easy way to analyze these tracepoint files ?<br>
> _______________________________________________<br>
> lttng-dev mailing list<br>
> <a href="mailto:lttng-dev@lists.lttng.org">lttng-dev@lists.lttng.org</a><br>
> <a href="http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev" target="_blank">http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev</a><br>
><br>
><br>
><br>
<span class=""><font color="#888888">><br>
> --<br>
> Eugene<br>
><br>
><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Eugene</div>
</div></div>