Some cool additions and improvements to ros2_tracing
, which provides tracing instrumentation for ROS 2 along with tools to easily configure tracing:
- DDS/middleware trace data is not required to track messages from publication to subscription anymore, thanks to @cwecht! See ros2/ros2_tracing#74
- To track a message from publication to subscription (i.e., end to end), we rely (in part) on the message’s
source_timestamp
value, which is explained in this paper, Section IV-A - This
source_timestamp
value was previously obtained from the middleware using tracing instrumentation, which required building Fast DDS or Cyclone DDS from source, since the instrumentation is not included in the binaries - The value is now obtained from the
rmw
implementations, so instrumentation in the DDS implementations is not needed; this means that this all works out of the box on Linux, since instrumentation is included by default in ROS 2 as of Iron! - I have an open PR that adds support for this instrumentation change to Eclipse Trace Compass: eclipse-tracecompass-incubator/org.eclipse.tracecompass.incubator#24
- To track a message from publication to subscription (i.e., end to end), we rely (in part) on the message’s
- Instrumentation for generic publishers and subscriptions, thanks to @h-suzuki-isp! See ros2/rclcpp#2448
- New
ros2 trace start/pause/resume/stop
sub-commands to make configuring tracing in a script easier! See ros2/ros2_tracing#70 and the README - Better support for configuring LTTng, the underlying tracer! See ros2/ros2_tracing#81
- This change is not very external-facing, but it does now allow you to enable perf counters (e.g.,
perf:thread:task-clock
) through theros2 trace
command and theTrace
launch action
- This change is not very external-facing, but it does now allow you to enable perf counters (e.g.,
- Some better tracing configuration error reporting! See ros2/ros2_tracing#85