Improved documentation [WIP], cleaned up temporary functions
This commit is contained in:
parent
a1369890bf
commit
6db22c4d32
3 changed files with 344 additions and 174 deletions
18
README.md
18
README.md
|
@ -1,6 +1,6 @@
|
||||||
# MA Autoware Trace Analysis
|
# MA Autoware Trace Analysis
|
||||||
|
|
||||||
Automatically extract data dependencies and end-to-end (E2E) latencies from ROS2 trace data.
|
Automatically extract data dependencies and end-to-end (E2E) latencies from ROS2 trace data and source code.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
* Python 3.10 or newer (this is crucial!)
|
* Python 3.10 or newer (this is crucial!)
|
||||||
|
@ -9,6 +9,12 @@ Automatically extract data dependencies and end-to-end (E2E) latencies from ROS2
|
||||||
* [Tracetools Analysis](https://gitlab.com/ros-tracing/tracetools_analysis)
|
* [Tracetools Analysis](https://gitlab.com/ros-tracing/tracetools_analysis)
|
||||||
* `python3-babeltrace` and `python3-lttng`, e.g. via `sudo apt install`, **for Python 3.10** (this requires either Ubuntu 22.04 or custom installation)
|
* `python3-babeltrace` and `python3-lttng`, e.g. via `sudo apt install`, **for Python 3.10** (this requires either Ubuntu 22.04 or custom installation)
|
||||||
|
|
||||||
|
## Requirements for Optional Features
|
||||||
|
* `ros2_internal_dependency_analyzer` for finding intra-node dependencies via static analysis, which can then be
|
||||||
|
utilized by this tool
|
||||||
|
* `ros2 multitopic bw` for recording message sizes which can then be processed by this tool
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
@ -36,7 +42,9 @@ E2E_ENABLED = True
|
||||||
```shell
|
```shell
|
||||||
# In the shell of your choice (choose Bash!):
|
# In the shell of your choice (choose Bash!):
|
||||||
# Each setting is named the same as in the notebook but prefixed by "ANA_NB_".
|
# Each setting is named the same as in the notebook but prefixed by "ANA_NB_".
|
||||||
ANA_NB_TR_PATH="path/to/trace/dir"
|
# For strings, quotes have to be included IN THE VARIABLE VALUE, i.e. double quotation "'...'"
|
||||||
|
# has to be used in most cases
|
||||||
|
ANA_NB_TR_PATH="'path/to/trace/dir'"
|
||||||
ANA_NB_E2E_ENABLED="True"
|
ANA_NB_E2E_ENABLED="True"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -46,7 +54,7 @@ from the command line:
|
||||||
jupyter nbconvert --to notebook --execute trace-analysis.ipynb
|
jupyter nbconvert --to notebook --execute trace-analysis.ipynb
|
||||||
```
|
```
|
||||||
|
|
||||||
nbconvert can also be called from Python directly,
|
The notebook also supports invocation via [Papermill](https://papermill.readthedocs.io/en/latest/).
|
||||||
read more info on nbconvert [here](https://nbconvert.readthedocs.io/en/latest/execute_api.html).
|
|
||||||
|
|
||||||
The output files are found in the configured output dir (default: `out/`). Inputs are processed and cached in `cache/`.
|
The output files are found in the configured output dir (default: `out/`).
|
||||||
|
Inputs are processed and cached in `cache/`.
|
||||||
|
|
|
@ -347,3 +347,27 @@ def aggregate_e2e_paths(paths: List[List[TrPublishInstance | TrCallbackInstance]
|
||||||
path_cohorts[key].append(path)
|
path_cohorts[key].append(path)
|
||||||
|
|
||||||
return path_cohorts
|
return path_cohorts
|
||||||
|
|
||||||
|
|
||||||
|
def label_latency_item(item: E2EBreakdownItem):
|
||||||
|
match item.type:
|
||||||
|
case "cpu":
|
||||||
|
return f"{_repr(item.location[0])}"
|
||||||
|
case "idle":
|
||||||
|
cb_inst: TrCallbackInstance = item.location[0]
|
||||||
|
owner = cb_inst.callback_obj.owner
|
||||||
|
match owner:
|
||||||
|
case TrTimer() as tmr:
|
||||||
|
tmr: TrTimer
|
||||||
|
node_name = tmr.node.path
|
||||||
|
case TrSubscriptionObject() as sub:
|
||||||
|
sub: TrSubscriptionObject
|
||||||
|
node_name = sub.subscription.node.path
|
||||||
|
case _:
|
||||||
|
raise TypeError()
|
||||||
|
return f"{node_name}"
|
||||||
|
case "dds":
|
||||||
|
msg_inst: TrPublishInstance = item.location[0]
|
||||||
|
return f"{msg_inst.publisher.topic_name}"
|
||||||
|
case _:
|
||||||
|
return ValueError()
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue