Repository Summary
Checkout URI | https://gitlab.com/ros-tracing/tracetools_analysis.git |
VCS Type | git |
VCS Version | galactic |
Last Updated | 2021-04-27 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
ros2trace_analysis | 2.0.3 |
tracetools_analysis | 2.0.3 |
README
tracetools_analysis
Analysis tools for ROS 2 tracing.
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 loading
from tracetools_analysis import processor
from tracetools_analysis import utils
# Load trace directory or converted trace file
events = loading.load_file('/path/to/trace/or/converted/file')
# Process
ros2_handler = processor.Ros2Handler()
cpu_handler = processor.CpuTimeHandler()
processor.Processor(ros2_handler, cpu_handler).process(events)
# Use data model utils to extract information
ros2_util = utils.ros2.Ros2DataModelUtil(ros2_handler.data)
cpu_util = utils.cpu_time.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
# ...
Note: bokeh has to be installed manually, e.g. with pip
:
$ pip3 install bokeh
Design
See the ros2_tracing
design document, especially the Goals and requirements and Analysis sections.
Packages
ros2trace_analysis
Package containing a ros2cli
extension to perform trace analysis.
tracetools_analysis
Package containing tools for analyzing trace data.
See the API documentation.