No description
Find a file
Christophe Bedard f8a468f603 0.2.0
2019-10-14 09:47:48 -07:00
ros2trace_analysis 0.2.0 2019-10-14 09:47:48 -07:00
tracetools_analysis 0.2.0 2019-10-14 09:47:48 -07:00
.gitlab-ci.yml Add ros2trace_analysis command and process/convert verbs 2019-10-13 14:39:21 -07:00
LICENSE Add license 2019-06-24 16:44:03 +02:00
README.md Add jupyter example 2019-10-13 16:11:00 -07:00

tracetools_analysis

Analysis tools for ROS 2 tracing.

Setup

To display results, install:

Trace analysis

After generating a trace (see ros2_tracing), we can analyze it to extract useful execution data.

Commands

Since CTF traces (the output format of the LTTng tracer) are very slow to read, we first convert them into a single file which can be read much faster.

$ ros2 trace-analysis convert /path/to/trace/directory

Then we can process it to create a data model which could be queried for analysis.

$ ros2 trace-analysis process /path/to/trace/directory

Jupyter

The last command will process and output the raw data models, but to actually display results, process and analyze using a Jupyter Notebook.

$ jupyter notebook

Then navigate to the analysis/ directory, and select one of the provided notebooks, or create your own!

For example:

from tracetools_analysis import utils
from tracetools_analysis.loading import load_file
from tracetools_analysis.processor import Processor
from tracetools_analysis.processor.cpu_time import CpuTimeHandler
from tracetools_analysis.processor.ros2 import Ros2Handler

# Load converted trace file
events = load_file('/path/to/converted/file')

# Process
ros2_handler = Ros2Handler()
cpu_handler = CpuTimeHandler()

Processor(ros2_handler, cpu_handler).process(events)

# Use data model utils to extract information
ros2_util = utils.RosDataModelUtil(ros2_handler.data)
cpu_util = CpuTimeDataModelUtil(cpu_handler.data)

callback_durations = ros2_util.get_callback_durations()
time_per_thread = cpu_util.get_time_per_thread()
# ...

# Display, e.g. with bokeh or matplotlib
# ...

Design

See the ros2_tracing design document, especially the Goals and requirements and Analysis architecture sections.