LTTng


We’ll start with Ingo Lutkebohle’s package…

https://github.com/bosch-robotics-cr/tracetools

Here’s a link to a simple configuration script…

https://github.com/bosch-robotics-cr/tracetools/blob/devel/scripts/setup-lttng-roscpp.sh


We’ll need to try and capture (among other things)…

  • Events
  • State Entry (Construction) and Exit (Destruction)
  • Messages (Actions, Services, Msgs) sent and recieved so as to measure the time required by the client vs. the server.

Andreas Huber Doenni’s discussion of the performance bottlenecks in Boost Statechart is outstanding…

https://www.boost.org/doc/libs/1_70_0/libs/statechart/doc/performance.html


Here’s a little description of state_cast<>…

https://lttng.org/docs/v2.10/

http://archive.eclipse.org/tracecompass.incubator/doc/org.eclipse.tracecompass.incubator.ros.doc.user/User-Guide.html

This is an excellent article…

https://christophebedard.com/ros-tracing-message-flow/

https://github.com/christophebedard/tracecompass_ros_testcases

https://christophebedard.com/ros-tracing-message-flow/


http://www.yonch.com/tech/lttng-tracepoint-file

Implemenation Plan

The gameplan is to instrument the Event Queue, as well as the threads, probably the signal detector and fifo worker, in order to get a clear picture of SMACC’s internal operations. This is the best place to start, and will require our own version of the tracetools package, but modified to have SMACC be the Tracepoint provider and with functions (see https://github.com/christophebedard/tracetools/blob/devel/include/tracetools/tracetools.h or https://gitlab.com/micro-ROS/ros_tracing/ros2_tracing/blob/master/tracetools/include/tracetools/tracetools.h) more suited to tracing threads. Another option would be to simply inline the code, but I think that would make the code far less readable.

To start with, we want to be able to trace…

  • post_event
  • process_event
  • discard_event
  • forward_event
  • transitions

After we’ve essentially created our own tracetools package, and followed the LTTng installation instructions, we then either need to use shell scripts (see

Then, for the outward facing clients, our goal is to make it easy for SMACC users to analyze sessions with the standard LTTng tracing packages…

https://github.com/christophebedard/tracetools for ROS1

https://gitlab.com/micro-ROS/ros_tracing/ros2_tracing for ROS2


Tracepoint Provider/TRACEPOINT_EVENT() MACRO Examples

https://github.com/christophebedard/tracetools/blob/devel/lttng/tp_call.tp

https://gitlab.com/micro-ROS/ros_tracing/ros2_tracing/blob/master/tracetools/include/tracetools/tp_call.h

This is the shell script that actually assigns tracepoint events…

https://github.com/christophebedard/tracetools/blob/devel/scripts/setup-lttng-roscpp.sh

Here’s the starting point of LTTng documentation…

https://lttng.org/man/3/lttng-ust/v2.8/#doc-tracepoint-event