Repository Summary
| Description | |
| 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.