diff --git a/irobot_benchmark/CMakeLists.txt b/irobot_benchmark/CMakeLists.txt
index 54f80f85..92156b22 100644
--- a/irobot_benchmark/CMakeLists.txt
+++ b/irobot_benchmark/CMakeLists.txt
@@ -24,21 +24,14 @@ install(TARGETS
DESTINATION lib/${PROJECT_NAME}
)
-set(TOPOLOGY_FILES
- topology/sierra_nevada.json
- topology/cedar.json
- topology/mont_blanc.json
- topology/white_mountain.json
- topology/debug_sierra_nevada_reliable.json
- topology/debug_sierra_nevada_best_effort.json
- topology/debug_mont_blanc_reliable.json
- topology/debug_mont_blanc_best_effort.json
+install(
+ DIRECTORY
+ profiles
+ topology
+ TYPE
+ DATA
)
-install(FILES
- ${TOPOLOGY_FILES}
- DESTINATION lib/${PROJECT_NAME}/topology)
-
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
diff --git a/irobot_benchmark/profiles/ignore_local_endpoints.xml b/irobot_benchmark/profiles/ignore_local_endpoints.xml
new file mode 100644
index 00000000..a9361e2f
--- /dev/null
+++ b/irobot_benchmark/profiles/ignore_local_endpoints.xml
@@ -0,0 +1,44 @@
+
+
+
+ OFF
+
+
+
+
+ UDP
+ UDPv4
+
+
+
+
+
+ UDP
+
+ false
+
+
+
+
+
+
+ fastdds.match_local_endpoints
+ false
+ false
+
+
+
+
+
+
+
+
+ fastdds.match_local_endpoints
+ false
+ false
+
+
+
+
+
+
\ No newline at end of file
diff --git a/irobot_benchmark/profiles/shared_memory_fastdds_config.xml b/irobot_benchmark/profiles/shared_memory_fastdds_config.xml
new file mode 100644
index 00000000..7dfd529f
--- /dev/null
+++ b/irobot_benchmark/profiles/shared_memory_fastdds_config.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ ASYNCHRONOUS
+
+
+ AUTOMATIC
+
+
+ PREALLOCATED_WITH_REALLOC
+
+
+
+
+
+ AUTOMATIC
+
+
+ PREALLOCATED_WITH_REALLOC
+
+
+
\ No newline at end of file
diff --git a/irobot_benchmark/src/irobot_benchmark.cpp b/irobot_benchmark/src/irobot_benchmark.cpp
index b00a9cd0..028c2e7d 100644
--- a/irobot_benchmark/src/irobot_benchmark.cpp
+++ b/irobot_benchmark/src/irobot_benchmark.cpp
@@ -76,7 +76,8 @@ create_ros2_system(
static_cast(options.executor),
performance_test::SpinType::SPIN,
events_output_path_opt,
- options.csv_out);
+ options.csv_out,
+ options.execute_timers_separate_thread);
return system;
}
diff --git a/irobot_benchmark/topology/cedar.json b/irobot_benchmark/topology/full_topologies/cedar.json
similarity index 100%
rename from irobot_benchmark/topology/cedar.json
rename to irobot_benchmark/topology/full_topologies/cedar.json
diff --git a/irobot_benchmark/topology/debug_mont_blanc_best_effort.json b/irobot_benchmark/topology/full_topologies/debug_mont_blanc_best_effort.json
similarity index 100%
rename from irobot_benchmark/topology/debug_mont_blanc_best_effort.json
rename to irobot_benchmark/topology/full_topologies/debug_mont_blanc_best_effort.json
diff --git a/irobot_benchmark/topology/debug_mont_blanc_reliable.json b/irobot_benchmark/topology/full_topologies/debug_mont_blanc_reliable.json
similarity index 100%
rename from irobot_benchmark/topology/debug_mont_blanc_reliable.json
rename to irobot_benchmark/topology/full_topologies/debug_mont_blanc_reliable.json
diff --git a/irobot_benchmark/topology/debug_sierra_nevada_best_effort.json b/irobot_benchmark/topology/full_topologies/debug_sierra_nevada_best_effort.json
similarity index 100%
rename from irobot_benchmark/topology/debug_sierra_nevada_best_effort.json
rename to irobot_benchmark/topology/full_topologies/debug_sierra_nevada_best_effort.json
diff --git a/irobot_benchmark/topology/full_topologies/debug_sierra_nevada_fixed_size_best_effort.json b/irobot_benchmark/topology/full_topologies/debug_sierra_nevada_fixed_size_best_effort.json
new file mode 100644
index 00000000..7ac0cd84
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/debug_sierra_nevada_fixed_size_best_effort.json
@@ -0,0 +1,22 @@
+{
+ "nodes": [
+ {
+ "node_name": "debug_node",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"congo", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"danube", "msg_type":"stamped_int64", "qos_reliability":"best_effort"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"lena", "msg_type":"stamped50b", "qos_reliability":"best_effort"},
+ {"topic_name":"mekong", "msg_type":"stamped100b", "qos_reliability":"best_effort"},
+ {"topic_name":"missouri", "msg_type":"stamped10kb", "qos_reliability":"best_effort"},
+ {"topic_name":"nile", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"salween", "msg_type":"stamped12_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"volga", "msg_type":"stamped_int64", "qos_reliability":"best_effort"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/debug_sierra_nevada_reliable.json b/irobot_benchmark/topology/full_topologies/debug_sierra_nevada_reliable.json
similarity index 100%
rename from irobot_benchmark/topology/debug_sierra_nevada_reliable.json
rename to irobot_benchmark/topology/full_topologies/debug_sierra_nevada_reliable.json
diff --git a/irobot_benchmark/topology/full_topologies/debug_white_mountain_best_effort.json b/irobot_benchmark/topology/full_topologies/debug_white_mountain_best_effort.json
new file mode 100644
index 00000000..464d7ec4
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/debug_white_mountain_best_effort.json
@@ -0,0 +1,33 @@
+{
+ "nodes": [
+ {
+ "node_name": "debug_node",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"brazos", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"chenab", "msg_type":"stamped1kb", "qos_reliability":"best_effort"},
+ {"topic_name":"colorado", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"columbia", "msg_type":"stamped600kb", "qos_reliability":"best_effort"},
+ {"topic_name":"congo", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"danube", "msg_type":"stamped_int64", "qos_reliability":"best_effort"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"godavari", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"lena", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"loire", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"mekong", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"missouri", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"murray", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"nile", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"ohio", "msg_type":"stamped100b", "qos_reliability":"best_effort"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"salween", "msg_type":"stamped12_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"tagus", "msg_type":"stamped_vector", "qos_reliability":"best_effort"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"volga", "msg_type":"stamped_int64", "qos_reliability":"best_effort"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/full_topologies/debug_white_mountain_fixed_size_best_effort.json b/irobot_benchmark/topology/full_topologies/debug_white_mountain_fixed_size_best_effort.json
new file mode 100644
index 00000000..9c4749d1
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/debug_white_mountain_fixed_size_best_effort.json
@@ -0,0 +1,32 @@
+{
+ "nodes": [
+ {
+ "node_name": "debug_node",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"brazos", "msg_type":"stamped25kb", "qos_reliability":"best_effort"},
+ {"topic_name":"chenab", "msg_type":"stamped1kb", "qos_reliability":"best_effort"},
+ {"topic_name":"colorado", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"columbia", "msg_type":"stamped600kb", "qos_reliability":"best_effort"},
+ {"topic_name":"congo", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"danube", "msg_type":"stamped_int64", "qos_reliability":"best_effort"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb", "qos_reliability":"best_effort"},
+ {"topic_name":"lena", "msg_type":"stamped50b", "qos_reliability":"best_effort"},
+ {"topic_name":"loire", "msg_type":"stamped1kb", "qos_reliability":"best_effort"},
+ {"topic_name":"mekong", "msg_type":"stamped100b", "qos_reliability":"best_effort"},
+ {"topic_name":"missouri", "msg_type":"stamped10kb", "qos_reliability":"best_effort"},
+ {"topic_name":"murray", "msg_type":"stamped100b", "qos_reliability":"best_effort"},
+ {"topic_name":"nile", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"},
+ {"topic_name":"ohio", "msg_type":"stamped100b", "qos_reliability":"best_effort"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"salween", "msg_type":"stamped12_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"tagus", "msg_type":"stamped50kb", "qos_reliability":"best_effort"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32", "qos_reliability":"best_effort"},
+ {"topic_name":"volga", "msg_type":"stamped_int64", "qos_reliability":"best_effort"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32", "qos_reliability":"best_effort"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/mont_blanc.json b/irobot_benchmark/topology/full_topologies/mont_blanc.json
similarity index 100%
rename from irobot_benchmark/topology/mont_blanc.json
rename to irobot_benchmark/topology/full_topologies/mont_blanc.json
diff --git a/irobot_benchmark/topology/mont_blanc.pdf b/irobot_benchmark/topology/full_topologies/mont_blanc.pdf
similarity index 100%
rename from irobot_benchmark/topology/mont_blanc.pdf
rename to irobot_benchmark/topology/full_topologies/mont_blanc.pdf
diff --git a/irobot_benchmark/topology/sierra_nevada.json b/irobot_benchmark/topology/full_topologies/sierra_nevada.json
similarity index 100%
rename from irobot_benchmark/topology/sierra_nevada.json
rename to irobot_benchmark/topology/full_topologies/sierra_nevada.json
diff --git a/irobot_benchmark/topology/sierra_nevada.pdf b/irobot_benchmark/topology/full_topologies/sierra_nevada.pdf
similarity index 100%
rename from irobot_benchmark/topology/sierra_nevada.pdf
rename to irobot_benchmark/topology/full_topologies/sierra_nevada.pdf
diff --git a/irobot_benchmark/topology/full_topologies/sierra_nevada_fixed_size.json b/irobot_benchmark/topology/full_topologies/sierra_nevada_fixed_size.json
new file mode 100644
index 00000000..b96415a5
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/sierra_nevada_fixed_size.json
@@ -0,0 +1,109 @@
+{
+ "nodes": [
+ {
+ "node_name": "montreal",
+ "publishers": [
+ {"topic_name": "amazon", "msg_type": "stamped9_float32", "period_ms": 10, "msg_pass_by":"shared_ptr"},
+ {"topic_name": "nile", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"shared_ptr"},
+ {"topic_name": "ganges", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"shared_ptr"},
+ {"topic_name": "danube", "msg_type": "stamped_int64", "period_ms": 10, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "lyon",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "tigris", "msg_type": "stamped4_float32", "period_ms": 10, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "hamburg",
+ "subscribers":[
+ {"topic_name":"nile", "msg_type":"stamped4_int32"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "parana", "msg_type": "stamped3_float32", "period_ms": 10, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "osaka",
+ "subscribers":[
+ {"topic_name":"parana", "msg_type":"stamped3_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "salween", "msg_type": "stamped12_float32", "period_ms": 100, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "mandalay",
+ "subscribers":[
+ {"topic_name":"salween", "msg_type":"stamped12_float32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "missouri", "msg_type": "stamped10kb", "period_ms": 100, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "ponce",
+ "subscribers":[
+ {"topic_name":"missouri", "msg_type":"stamped10kb"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"volga", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "mekong", "msg_type": "stamped100b", "period_ms": 500, "msg_pass_by":"shared_ptr"},
+ {"topic_name": "congo", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "barcelona",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "lena", "msg_type": "stamped50b", "period_ms": 100, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "georgetown",
+ "subscribers":[
+ {"topic_name":"lena", "msg_type":"stamped50b"}
+ ],
+ "publishers": [
+ {"topic_name": "volga", "msg_type": "stamped_int64", "period_ms": 500, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "geneva",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "arkansas", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"shared_ptr"}
+ ]
+ },
+
+ {
+ "node_name": "arequipa",
+ "subscribers":[
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/full_topologies/sierra_nevada_fixed_size_loaned.json b/irobot_benchmark/topology/full_topologies/sierra_nevada_fixed_size_loaned.json
new file mode 100644
index 00000000..1e7783e7
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/sierra_nevada_fixed_size_loaned.json
@@ -0,0 +1,109 @@
+{
+ "nodes": [
+ {
+ "node_name": "montreal",
+ "publishers": [
+ {"topic_name": "amazon", "msg_type": "stamped9_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "nile", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "ganges", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "danube", "msg_type": "stamped_int64", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "lyon",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "tigris", "msg_type": "stamped4_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "hamburg",
+ "subscribers":[
+ {"topic_name":"nile", "msg_type":"stamped4_int32"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "parana", "msg_type": "stamped3_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "osaka",
+ "subscribers":[
+ {"topic_name":"parana", "msg_type":"stamped3_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "salween", "msg_type": "stamped12_float32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "mandalay",
+ "subscribers":[
+ {"topic_name":"salween", "msg_type":"stamped12_float32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "missouri", "msg_type": "stamped10kb", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "ponce",
+ "subscribers":[
+ {"topic_name":"missouri", "msg_type":"stamped10kb"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"volga", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "mekong", "msg_type": "stamped100b", "period_ms": 500, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "congo", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "barcelona",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "lena", "msg_type": "stamped50b", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "georgetown",
+ "subscribers":[
+ {"topic_name":"lena", "msg_type":"stamped50b"}
+ ],
+ "publishers": [
+ {"topic_name": "volga", "msg_type": "stamped_int64", "period_ms": 500, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "geneva",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "arkansas", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "arequipa",
+ "subscribers":[
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/full_topologies/sierra_nevada_loaned.json b/irobot_benchmark/topology/full_topologies/sierra_nevada_loaned.json
new file mode 100644
index 00000000..dc84a753
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/sierra_nevada_loaned.json
@@ -0,0 +1,109 @@
+{
+ "nodes": [
+ {
+ "node_name": "montreal",
+ "publishers": [
+ {"topic_name": "amazon", "msg_type": "stamped9_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "nile", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "ganges", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "danube", "msg_type": "stamped_int64", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "lyon",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "tigris", "msg_type": "stamped4_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "hamburg",
+ "subscribers":[
+ {"topic_name":"nile", "msg_type":"stamped4_int32"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "parana", "msg_type": "stamped3_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "osaka",
+ "subscribers":[
+ {"topic_name":"parana", "msg_type":"stamped3_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "salween", "msg_type": "stamped12_float32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "mandalay",
+ "subscribers":[
+ {"topic_name":"salween", "msg_type":"stamped12_float32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "missouri", "msg_type": "stamped_vector", "msg_size": 10000, "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "ponce",
+ "subscribers":[
+ {"topic_name":"missouri", "msg_type":"stamped_vector"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"volga", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "mekong", "msg_type": "stamped_vector", "msg_size": 100, "period_ms": 500, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "congo", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "barcelona",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "lena", "msg_type": "stamped_vector", "msg_size": 50, "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "georgetown",
+ "subscribers":[
+ {"topic_name":"lena", "msg_type":"stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "volga", "msg_type": "stamped_int64", "period_ms": 500, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "geneva",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "arkansas", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ]
+ },
+
+ {
+ "node_name": "arequipa",
+ "subscribers":[
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/white_mountain.json b/irobot_benchmark/topology/full_topologies/white_mountain.json
similarity index 100%
rename from irobot_benchmark/topology/white_mountain.json
rename to irobot_benchmark/topology/full_topologies/white_mountain.json
diff --git a/irobot_benchmark/topology/full_topologies/white_mountain_fixed_size.json b/irobot_benchmark/topology/full_topologies/white_mountain_fixed_size.json
new file mode 100644
index 00000000..8bb248b0
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/white_mountain_fixed_size.json
@@ -0,0 +1,225 @@
+{
+ "nodes": [
+ {
+ "node_name": "cordoba",
+ "publishers": [
+ {"topic_name": "amazon", "msg_type": "stamped9_float32", "period_ms": 10}
+ ],
+ "executor_id":1
+ },
+
+ {
+ "node_name": "freeport",
+ "publishers": [
+ {"topic_name": "ganges", "msg_type": "stamped4_int32", "period_ms": 10}
+ ],
+ "executor_id":2
+ },
+
+ {
+ "node_name": "medellin",
+ "publishers": [
+ {"topic_name": "nile", "msg_type": "stamped4_int32", "period_ms": 10}
+ ],
+ "executor_id":3
+ },
+
+ {
+ "node_name": "portsmouth",
+ "publishers": [
+ {"topic_name": "danube", "msg_type": "stamped_int64", "period_ms": 10}
+ ],
+ "executor_id":4
+ },
+
+ {
+ "node_name": "lyon",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "tigris", "msg_type": "stamped4_float32", "period_ms": 10}
+ ],
+ "executor_id":5
+ },
+
+ {
+ "node_name": "hamburg",
+ "subscribers":[
+ {"topic_name":"nile", "msg_type":"stamped4_int32"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "parana", "msg_type": "stamped3_float32", "period_ms": 10}
+ ],
+ "executor_id":6
+ },
+
+ {
+ "node_name": "delhi",
+ "publishers": [
+ {"topic_name": "columbia", "msg_type": "stamped600kb", "freq_hz": 15}
+ ],
+ "executor_id":7
+ },
+
+ {
+ "node_name": "taipei",
+ "subscribers":[
+ {"topic_name":"columbia", "msg_type":"stamped600kb"}
+ ],
+ "publishers": [
+ {"topic_name": "colorado", "msg_type": "stamped4_int32", "period_ms": 200}
+ ],
+ "executor_id":8
+ },
+
+ {
+ "node_name": "osaka",
+ "subscribers":[
+ {"topic_name":"parana", "msg_type":"stamped3_float32"},
+ {"topic_name":"colorado", "msg_type":"stamped4_int32"}
+ ],
+ "publishers": [
+ {"topic_name": "salween", "msg_type": "stamped12_float32", "period_ms": 100},
+ {"topic_name": "godavari", "msg_type": "stamped5kb", "period_ms": 200}
+ ],
+ "executor_id":9
+ },
+
+ {
+ "node_name": "tripoli",
+ "subscribers":[
+ {"topic_name":"columbia", "msg_type":"stamped600kb"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb"}
+ ],
+ "publishers": [
+ {"topic_name": "loire", "msg_type": "stamped1kb", "period_ms": 200}
+ ],
+ "executor_id":10
+ },
+
+ {
+ "node_name": "kingston",
+ "publishers": [
+ {"topic_name": "yamuna", "msg_type": "stamped4_int32", "period_ms": 100}
+ ],
+ "executor_id":11
+ },
+
+ {
+ "node_name": "hebron",
+ "publishers": [
+ {"topic_name": "chenab", "msg_type": "stamped1kb", "period_ms": 25}
+ ],
+ "executor_id":12
+ },
+
+ {
+ "node_name": "mandalay",
+ "subscribers":[
+ {"topic_name":"salween", "msg_type":"stamped12_float32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32"},
+ {"topic_name": "loire", "msg_type": "stamped1kb"},
+ {"topic_name": "chenab", "msg_type": "stamped1kb"}
+ ],
+ "publishers": [
+ {"topic_name": "missouri", "msg_type": "stamped10kb", "period_ms": 100},
+ {"topic_name": "tagus", "msg_type": "stamped50kb", "period_ms": 100},
+ {"topic_name": "brazos", "msg_type": "stamped25kb", "period_ms": 100}
+ ],
+ "executor_id":13
+ },
+
+ {
+ "node_name": "ponce",
+ "subscribers":[
+ {"topic_name":"missouri", "msg_type":"stamped10kb"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"volga", "msg_type":"stamped_int64"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32"},
+ {"topic_name": "loire", "msg_type": "stamped1kb"},
+ {"topic_name": "tagus", "msg_type": "stamped50kb"},
+ {"topic_name": "brazos", "msg_type": "stamped25kb"},
+ {"topic_name": "ohio", "msg_type": "stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "mekong", "msg_type": "stamped100b", "period_ms": 500},
+ {"topic_name": "congo", "msg_type": "stamped4_int32", "period_ms": 100}
+ ],
+ "executor_id":14
+ },
+
+ {
+ "node_name": "barcelona",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "lena", "msg_type": "stamped50b", "period_ms": 100}
+ ],
+ "executor_id":15
+ },
+
+ {
+ "node_name": "monaco",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"}
+ ],
+ "publishers": [
+ {"topic_name": "ohio", "msg_type": "stamped100b", "period_ms": 200}
+ ],
+ "executor_id":16
+ },
+
+ {
+ "node_name": "georgetown",
+ "subscribers":[
+ {"topic_name":"lena", "msg_type":"stamped50b"},
+ {"topic_name":"murray", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "volga", "msg_type": "stamped_int64", "period_ms": 500}
+ ],
+ "executor_id":17
+ },
+
+ {
+ "node_name": "rotterdam",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "murray", "msg_type": "stamped100b", "period_ms": 500}
+ ],
+ "executor_id":18
+ },
+
+ {
+ "node_name": "geneva",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32"},
+ {"topic_name": "tagus", "msg_type": "stamped50kb"}
+ ],
+ "publishers": [
+ {"topic_name": "arkansas", "msg_type": "stamped4_int32", "period_ms": 100}
+ ],
+ "executor_id":19
+ },
+
+ {
+ "node_name": "arequipa",
+ "subscribers":[
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32"}
+ ],
+ "executor_id":20
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/full_topologies/white_mountain_fixed_size_loaned.json b/irobot_benchmark/topology/full_topologies/white_mountain_fixed_size_loaned.json
new file mode 100644
index 00000000..72ca774d
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/white_mountain_fixed_size_loaned.json
@@ -0,0 +1,225 @@
+{
+ "nodes": [
+ {
+ "node_name": "cordoba",
+ "publishers": [
+ {"topic_name": "amazon", "msg_type": "stamped9_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":1
+ },
+
+ {
+ "node_name": "freeport",
+ "publishers": [
+ {"topic_name": "ganges", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":2
+ },
+
+ {
+ "node_name": "medellin",
+ "publishers": [
+ {"topic_name": "nile", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":3
+ },
+
+ {
+ "node_name": "portsmouth",
+ "publishers": [
+ {"topic_name": "danube", "msg_type": "stamped_int64", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":4
+ },
+
+ {
+ "node_name": "lyon",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "tigris", "msg_type": "stamped4_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":5
+ },
+
+ {
+ "node_name": "hamburg",
+ "subscribers":[
+ {"topic_name":"nile", "msg_type":"stamped4_int32"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "parana", "msg_type": "stamped3_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":6
+ },
+
+ {
+ "node_name": "delhi",
+ "publishers": [
+ {"topic_name": "columbia", "msg_type": "stamped600kb", "freq_hz": 15}
+ ],
+ "executor_id":7
+ },
+
+ {
+ "node_name": "taipei",
+ "subscribers":[
+ {"topic_name":"columbia", "msg_type":"stamped600kb"}
+ ],
+ "publishers": [
+ {"topic_name": "colorado", "msg_type": "stamped4_int32", "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":8
+ },
+
+ {
+ "node_name": "osaka",
+ "subscribers":[
+ {"topic_name":"parana", "msg_type":"stamped3_float32"},
+ {"topic_name":"colorado", "msg_type":"stamped4_int32"}
+ ],
+ "publishers": [
+ {"topic_name": "salween", "msg_type": "stamped12_float32", "period_ms": 100, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "godavari", "msg_type": "stamped5kb", "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":9
+ },
+
+ {
+ "node_name": "tripoli",
+ "subscribers":[
+ {"topic_name":"columbia", "msg_type":"stamped600kb"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb"}
+ ],
+ "publishers": [
+ {"topic_name": "loire", "msg_type": "stamped1kb", "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":10
+ },
+
+ {
+ "node_name": "kingston",
+ "publishers": [
+ {"topic_name": "yamuna", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":11
+ },
+
+ {
+ "node_name": "hebron",
+ "publishers": [
+ {"topic_name": "chenab", "msg_type": "stamped1kb", "period_ms": 25, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":12
+ },
+
+ {
+ "node_name": "mandalay",
+ "subscribers":[
+ {"topic_name":"salween", "msg_type":"stamped12_float32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32"},
+ {"topic_name": "loire", "msg_type": "stamped1kb"},
+ {"topic_name": "chenab", "msg_type": "stamped1kb"}
+ ],
+ "publishers": [
+ {"topic_name": "missouri", "msg_type": "stamped10kb", "period_ms": 100, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "tagus", "msg_type": "stamped50kb", "period_ms": 100, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "brazos", "msg_type": "stamped25kb", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":13
+ },
+
+ {
+ "node_name": "ponce",
+ "subscribers":[
+ {"topic_name":"missouri", "msg_type":"stamped10kb"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"volga", "msg_type":"stamped_int64"},
+ {"topic_name":"godavari", "msg_type":"stamped5kb"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32"},
+ {"topic_name": "loire", "msg_type": "stamped1kb"},
+ {"topic_name": "tagus", "msg_type": "stamped50kb"},
+ {"topic_name": "brazos", "msg_type": "stamped25kb"},
+ {"topic_name": "ohio", "msg_type": "stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "mekong", "msg_type": "stamped100b", "period_ms": 500, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "congo", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":14
+ },
+
+ {
+ "node_name": "barcelona",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "lena", "msg_type": "stamped50b", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":15
+ },
+
+ {
+ "node_name": "monaco",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"}
+ ],
+ "publishers": [
+ {"topic_name": "ohio", "msg_type": "stamped100b", "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":16
+ },
+
+ {
+ "node_name": "georgetown",
+ "subscribers":[
+ {"topic_name":"lena", "msg_type":"stamped50b"},
+ {"topic_name":"murray", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "volga", "msg_type": "stamped_int64", "period_ms": 500, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":17
+ },
+
+ {
+ "node_name": "rotterdam",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "murray", "msg_type": "stamped100b", "period_ms": 500, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":18
+ },
+
+ {
+ "node_name": "geneva",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32"},
+ {"topic_name": "tagus", "msg_type": "stamped50kb"}
+ ],
+ "publishers": [
+ {"topic_name": "arkansas", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":19
+ },
+
+ {
+ "node_name": "arequipa",
+ "subscribers":[
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32"}
+ ],
+ "executor_id":20
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/full_topologies/white_mountain_loaned.json b/irobot_benchmark/topology/full_topologies/white_mountain_loaned.json
new file mode 100644
index 00000000..f69a010b
--- /dev/null
+++ b/irobot_benchmark/topology/full_topologies/white_mountain_loaned.json
@@ -0,0 +1,225 @@
+{
+ "nodes": [
+ {
+ "node_name": "cordoba",
+ "publishers": [
+ {"topic_name": "amazon", "msg_type": "stamped9_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":1
+ },
+
+ {
+ "node_name": "freeport",
+ "publishers": [
+ {"topic_name": "ganges", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":2
+ },
+
+ {
+ "node_name": "medellin",
+ "publishers": [
+ {"topic_name": "nile", "msg_type": "stamped4_int32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":3
+ },
+
+ {
+ "node_name": "portsmouth",
+ "publishers": [
+ {"topic_name": "danube", "msg_type": "stamped_int64", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":4
+ },
+
+ {
+ "node_name": "lyon",
+ "subscribers":[
+ {"topic_name":"amazon", "msg_type":"stamped9_float32"}
+ ],
+ "publishers": [
+ {"topic_name": "tigris", "msg_type": "stamped4_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":5
+ },
+
+ {
+ "node_name": "hamburg",
+ "subscribers":[
+ {"topic_name":"nile", "msg_type":"stamped4_int32"},
+ {"topic_name":"tigris", "msg_type":"stamped4_float32"},
+ {"topic_name":"ganges", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"}
+ ],
+ "publishers": [
+ {"topic_name": "parana", "msg_type": "stamped3_float32", "period_ms": 10, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":6
+ },
+
+ {
+ "node_name": "delhi",
+ "publishers": [
+ {"topic_name": "columbia", "msg_type": "stamped600kb", "freq_hz": 15}
+ ],
+ "executor_id":7
+ },
+
+ {
+ "node_name": "taipei",
+ "subscribers":[
+ {"topic_name":"columbia", "msg_type":"stamped600kb"}
+ ],
+ "publishers": [
+ {"topic_name": "colorado", "msg_type": "stamped4_int32", "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":8
+ },
+
+ {
+ "node_name": "osaka",
+ "subscribers":[
+ {"topic_name":"parana", "msg_type":"stamped3_float32"},
+ {"topic_name":"colorado", "msg_type":"stamped4_int32"}
+ ],
+ "publishers": [
+ {"topic_name": "salween", "msg_type": "stamped12_float32", "period_ms": 100, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "godavari", "msg_type": "stamped_vector", "msg_size": 5000, "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":9
+ },
+
+ {
+ "node_name": "tripoli",
+ "subscribers":[
+ {"topic_name":"columbia", "msg_type":"stamped600kb"},
+ {"topic_name":"godavari", "msg_type":"stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "loire", "msg_type": "stamped_vector", "msg_size": 1000, "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":10
+ },
+
+ {
+ "node_name": "kingston",
+ "publishers": [
+ {"topic_name": "yamuna", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":11
+ },
+
+ {
+ "node_name": "hebron",
+ "publishers": [
+ {"topic_name": "chenab", "msg_type": "stamped1kb", "period_ms": 25, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":12
+ },
+
+ {
+ "node_name": "mandalay",
+ "subscribers":[
+ {"topic_name":"salween", "msg_type":"stamped12_float32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"godavari", "msg_type":"stamped_vector"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32"},
+ {"topic_name": "loire", "msg_type": "stamped_vector"},
+ {"topic_name": "chenab", "msg_type": "stamped1kb"}
+ ],
+ "publishers": [
+ {"topic_name": "missouri", "msg_type": "stamped_vector", "msg_size": 10000, "period_ms": 100, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "tagus", "msg_type": "stamped_vector", "msg_size": 50000, "period_ms": 100, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "brazos", "msg_type": "stamped_vector", "msg_size": 25000, "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":13
+ },
+
+ {
+ "node_name": "ponce",
+ "subscribers":[
+ {"topic_name":"missouri", "msg_type":"stamped_vector"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"volga", "msg_type":"stamped_int64"},
+ {"topic_name":"godavari", "msg_type":"stamped_vector"},
+ {"topic_name":"yamuna", "msg_type":"stamped4_int32"},
+ {"topic_name": "loire", "msg_type": "stamped_vector"},
+ {"topic_name": "tagus", "msg_type": "stamped_vector"},
+ {"topic_name": "brazos", "msg_type": "stamped_vector"},
+ {"topic_name": "ohio", "msg_type": "stamped100b"}
+ ],
+ "publishers": [
+ {"topic_name": "mekong", "msg_type": "stamped_vector", "msg_size": 100, "period_ms": 500, "msg_pass_by":"loaned_msg"},
+ {"topic_name": "congo", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":14
+ },
+
+ {
+ "node_name": "barcelona",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "lena", "msg_type": "stamped_vector", "msg_size": 50, "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":15
+ },
+
+ {
+ "node_name": "monaco",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"}
+ ],
+ "publishers": [
+ {"topic_name": "ohio", "msg_type": "stamped100b", "period_ms": 200, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":16
+ },
+
+ {
+ "node_name": "georgetown",
+ "subscribers":[
+ {"topic_name":"lena", "msg_type":"stamped_vector"},
+ {"topic_name":"murray", "msg_type":"stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "volga", "msg_type": "stamped_int64", "period_ms": 500, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":17
+ },
+
+ {
+ "node_name": "rotterdam",
+ "subscribers":[
+ {"topic_name":"mekong", "msg_type":"stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "murray", "msg_type": "stamped_vector", "msg_size": 100, "period_ms": 500, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":18
+ },
+
+ {
+ "node_name": "geneva",
+ "subscribers":[
+ {"topic_name":"congo", "msg_type":"stamped4_int32"},
+ {"topic_name":"danube", "msg_type":"stamped_int64"},
+ {"topic_name":"parana", "msg_type":"stamped3_float32"},
+ {"topic_name": "tagus", "msg_type": "stamped_vector"}
+ ],
+ "publishers": [
+ {"topic_name": "arkansas", "msg_type": "stamped4_int32", "period_ms": 100, "msg_pass_by":"loaned_msg"}
+ ],
+ "executor_id":19
+ },
+
+ {
+ "node_name": "arequipa",
+ "subscribers":[
+ {"topic_name":"arkansas", "msg_type":"stamped4_int32"}
+ ],
+ "executor_id":20
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_ipc_off_100kb.json b/irobot_benchmark/topology/multi_process/pub_ipc_off_100kb.json
new file mode 100755
index 00000000..98ba11cd
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_ipc_off_100kb.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped100kb",
+ "period_ms": 100,
+ "msg_pass_by":"shared_ptr"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_ipc_off_10b.json b/irobot_benchmark/topology/multi_process/pub_ipc_off_10b.json
new file mode 100755
index 00000000..ba766749
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_ipc_off_10b.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped10b",
+ "period_ms": 1,
+ "msg_pass_by":"shared_ptr"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_ipc_off_1mb.json b/irobot_benchmark/topology/multi_process/pub_ipc_off_1mb.json
new file mode 100755
index 00000000..103c830b
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_ipc_off_1mb.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped1mb",
+ "period_ms": 50,
+ "msg_pass_by":"shared_ptr"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_ipc_off_4mb.json b/irobot_benchmark/topology/multi_process/pub_ipc_off_4mb.json
new file mode 100755
index 00000000..fda15bcf
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_ipc_off_4mb.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped4mb",
+ "period_ms": 100,
+ "msg_pass_by":"shared_ptr"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_loaned_100kb.json b/irobot_benchmark/topology/multi_process/pub_loaned_100kb.json
new file mode 100755
index 00000000..390ba18c
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_loaned_100kb.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped100kb",
+ "period_ms": 100,
+ "msg_pass_by":"loaned_msg"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_loaned_10b.json b/irobot_benchmark/topology/multi_process/pub_loaned_10b.json
new file mode 100755
index 00000000..b2550f90
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_loaned_10b.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped10b",
+ "period_ms": 1,
+ "msg_pass_by":"loaned_msg"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_loaned_1mb.json b/irobot_benchmark/topology/multi_process/pub_loaned_1mb.json
new file mode 100755
index 00000000..b52df533
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_loaned_1mb.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped1mb",
+ "period_ms": 50,
+ "msg_pass_by":"loaned_msg"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/pub_loaned_4mb.json b/irobot_benchmark/topology/multi_process/pub_loaned_4mb.json
new file mode 100755
index 00000000..85172d5b
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/pub_loaned_4mb.json
@@ -0,0 +1,15 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped4mb",
+ "period_ms": 100,
+ "msg_pass_by":"loaned_msg"
+ }
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_ipc_off_100kb.json b/irobot_benchmark/topology/multi_process/sub_ipc_off_100kb.json
new file mode 100755
index 00000000..f8db1aea
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_ipc_off_100kb.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped100kb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_ipc_off_10b.json b/irobot_benchmark/topology/multi_process/sub_ipc_off_10b.json
new file mode 100755
index 00000000..4148c2fe
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_ipc_off_10b.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped10b"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_ipc_off_1mb.json b/irobot_benchmark/topology/multi_process/sub_ipc_off_1mb.json
new file mode 100755
index 00000000..0a2d68e6
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_ipc_off_1mb.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped1mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_ipc_off_4mb.json b/irobot_benchmark/topology/multi_process/sub_ipc_off_4mb.json
new file mode 100755
index 00000000..2498e8df
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_ipc_off_4mb.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped4mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_loaned_100kb.json b/irobot_benchmark/topology/multi_process/sub_loaned_100kb.json
new file mode 100755
index 00000000..f8db1aea
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_loaned_100kb.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped100kb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_loaned_10b.json b/irobot_benchmark/topology/multi_process/sub_loaned_10b.json
new file mode 100755
index 00000000..4148c2fe
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_loaned_10b.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped10b"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_loaned_1mb.json b/irobot_benchmark/topology/multi_process/sub_loaned_1mb.json
new file mode 100755
index 00000000..0a2d68e6
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_loaned_1mb.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped1mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/multi_process/sub_loaned_4mb.json b/irobot_benchmark/topology/multi_process/sub_loaned_4mb.json
new file mode 100755
index 00000000..2498e8df
--- /dev/null
+++ b/irobot_benchmark/topology/multi_process/sub_loaned_4mb.json
@@ -0,0 +1,10 @@
+{
+ "nodes": [
+ {
+ "node_name": "sub_node",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped4mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_100kb_ipc_off.json b/irobot_benchmark/topology/single_process/pub_sub_100kb_ipc_off.json
new file mode 100644
index 00000000..7c16f8c6
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_100kb_ipc_off.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped100kb",
+ "period_ms": 100,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped100kb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_100kb_ipc_on.json b/irobot_benchmark/topology/single_process/pub_sub_100kb_ipc_on.json
new file mode 100644
index 00000000..7c16f8c6
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_100kb_ipc_on.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped100kb",
+ "period_ms": 100,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped100kb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_10b_ipc_off.json b/irobot_benchmark/topology/single_process/pub_sub_10b_ipc_off.json
new file mode 100644
index 00000000..db02e8db
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_10b_ipc_off.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped10b",
+ "period_ms": 1,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped10b"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_10b_ipc_on.json b/irobot_benchmark/topology/single_process/pub_sub_10b_ipc_on.json
new file mode 100644
index 00000000..db02e8db
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_10b_ipc_on.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped10b",
+ "period_ms": 1,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped10b"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_1mb_ipc_off.json b/irobot_benchmark/topology/single_process/pub_sub_1mb_ipc_off.json
new file mode 100644
index 00000000..7e1ca44b
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_1mb_ipc_off.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped1mb",
+ "period_ms": 50,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped1mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_1mb_ipc_on.json b/irobot_benchmark/topology/single_process/pub_sub_1mb_ipc_on.json
new file mode 100644
index 00000000..7e1ca44b
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_1mb_ipc_on.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped1mb",
+ "period_ms": 50,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped1mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_4mb_ipc_off.json b/irobot_benchmark/topology/single_process/pub_sub_4mb_ipc_off.json
new file mode 100644
index 00000000..62764a4d
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_4mb_ipc_off.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped4mb",
+ "period_ms": 100,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped4mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_4mb_ipc_on.json b/irobot_benchmark/topology/single_process/pub_sub_4mb_ipc_on.json
new file mode 100644
index 00000000..62764a4d
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_4mb_ipc_on.json
@@ -0,0 +1,21 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped4mb",
+ "period_ms": 100,
+ "msg_pass_by":"unique_ptr"}
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped4mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_loaned_100kb.json b/irobot_benchmark/topology/single_process/pub_sub_loaned_100kb.json
new file mode 100644
index 00000000..275558ad
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_loaned_100kb.json
@@ -0,0 +1,22 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped100kb",
+ "period_ms": 100,
+ "msg_pass_by":"loaned_msg"
+ }
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped100kb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_loaned_10b.json b/irobot_benchmark/topology/single_process/pub_sub_loaned_10b.json
new file mode 100644
index 00000000..e4a8c217
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_loaned_10b.json
@@ -0,0 +1,22 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped10b",
+ "period_ms": 1,
+ "msg_pass_by":"loaned_msg"
+ }
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped10b"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_benchmark/topology/single_process/pub_sub_loaned_1mb.json b/irobot_benchmark/topology/single_process/pub_sub_loaned_1mb.json
new file mode 100755
index 00000000..e399a140
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_loaned_1mb.json
@@ -0,0 +1,23 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped1mb",
+ "period_ms": 50,
+ "msg_pass_by":"loaned_msg"
+ }
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped1mb"}
+ ]
+ }
+ ]
+}
+
diff --git a/irobot_benchmark/topology/single_process/pub_sub_loaned_4mb.json b/irobot_benchmark/topology/single_process/pub_sub_loaned_4mb.json
new file mode 100644
index 00000000..a85aa4ec
--- /dev/null
+++ b/irobot_benchmark/topology/single_process/pub_sub_loaned_4mb.json
@@ -0,0 +1,22 @@
+{
+ "nodes": [
+ {
+ "node_name": "pub_node_sp",
+ "publishers": [
+ {
+ "topic_name": "test",
+ "msg_type": "stamped4mb",
+ "period_ms": 100,
+ "msg_pass_by":"loaned_msg"
+ }
+
+ ]
+ },
+ {
+ "node_name": "sub_node_sp",
+ "subscribers":[
+ {"topic_name":"test", "msg_type":"stamped4mb"}
+ ]
+ }
+ ]
+}
diff --git a/irobot_interfaces_plugin/CMakeLists.txt b/irobot_interfaces_plugin/CMakeLists.txt
index 68786e97..29390342 100644
--- a/irobot_interfaces_plugin/CMakeLists.txt
+++ b/irobot_interfaces_plugin/CMakeLists.txt
@@ -26,10 +26,13 @@ set( CUSTOM_MSGS
"msg/Stamped9Float32.msg"
"msg/Stamped12Float32.msg"
"msg/Stamped10b.msg"
+ "msg/Stamped50b.msg"
"msg/Stamped100b.msg"
"msg/Stamped250b.msg"
"msg/Stamped1kb.msg"
+ "msg/Stamped5kb.msg"
"msg/Stamped10kb.msg"
+ "msg/Stamped25kb.msg"
"msg/Stamped50kb.msg"
"msg/Stamped100kb.msg"
"msg/Stamped250kb.msg"
diff --git a/irobot_interfaces_plugin/msg/Stamped25kb.msg b/irobot_interfaces_plugin/msg/Stamped25kb.msg
new file mode 100644
index 00000000..dd6fbff4
--- /dev/null
+++ b/irobot_interfaces_plugin/msg/Stamped25kb.msg
@@ -0,0 +1,2 @@
+performance_test_msgs/PerformanceHeader header
+byte[25000] data
\ No newline at end of file
diff --git a/irobot_interfaces_plugin/msg/Stamped50b.msg b/irobot_interfaces_plugin/msg/Stamped50b.msg
new file mode 100644
index 00000000..b0acd5b8
--- /dev/null
+++ b/irobot_interfaces_plugin/msg/Stamped50b.msg
@@ -0,0 +1,2 @@
+performance_test_msgs/PerformanceHeader header
+byte[50] data
\ No newline at end of file
diff --git a/irobot_interfaces_plugin/msg/Stamped5kb.msg b/irobot_interfaces_plugin/msg/Stamped5kb.msg
new file mode 100644
index 00000000..0ddd1c0b
--- /dev/null
+++ b/irobot_interfaces_plugin/msg/Stamped5kb.msg
@@ -0,0 +1,2 @@
+performance_test_msgs/PerformanceHeader header
+byte[5000] data
\ No newline at end of file
diff --git a/performance_test/include/performance_test/executors.hpp b/performance_test/include/performance_test/executors.hpp
index 8ac974c1..41b6e876 100644
--- a/performance_test/include/performance_test/executors.hpp
+++ b/performance_test/include/performance_test/executors.hpp
@@ -42,7 +42,7 @@ enum class SpinType
std::ostream & operator<<(std::ostream & os, const ExecutorType & t);
-std::shared_ptr make_executor(ExecutorType type);
+std::shared_ptr make_executor(ExecutorType type, bool execute_timers_separate_thread);
void sleep_task(std::chrono::milliseconds task_duration);
diff --git a/performance_test/include/performance_test/system.hpp b/performance_test/include/performance_test/system.hpp
index fcbfd00a..29dac86b 100644
--- a/performance_test/include/performance_test/system.hpp
+++ b/performance_test/include/performance_test/system.hpp
@@ -31,7 +31,8 @@ class System
ExecutorType executor_type = ExecutorType::SINGLE_THREADED_EXECUTOR,
SpinType spin_type = SpinType::SPIN,
const std::optional & events_logger_path = std::nullopt,
- const bool csv_out = false);
+ const bool csv_out = false,
+ const bool execute_timers_separate_thread = false);
~System();
@@ -95,6 +96,7 @@ class System
ExecutorType m_executor_type;
SpinType m_spin_type;
bool m_csv_out;
+ bool m_execute_timers_separate_thread;
};
} // namespace performance_test
diff --git a/performance_test/src/executors.cpp b/performance_test/src/executors.cpp
index a2d04126..caccb3f6 100644
--- a/performance_test/src/executors.cpp
+++ b/performance_test/src/executors.cpp
@@ -13,6 +13,8 @@
#include
#include
+#include
+
#include "performance_test/executors.hpp"
namespace performance_test
@@ -39,7 +41,7 @@ std::ostream & operator<<(std::ostream & os, const ExecutorType & t)
return os << executor_name;
}
-std::shared_ptr make_executor(ExecutorType type)
+std::shared_ptr make_executor(ExecutorType type, bool execute_timers_separate_thread)
{
std::shared_ptr executor;
@@ -51,7 +53,7 @@ std::shared_ptr make_executor(ExecutorType type)
executor = std::make_shared();
break;
case ExecutorType::EVENTS_EXECUTOR:
- executor = std::make_shared();
+ executor = std::make_shared(std::make_unique(), execute_timers_separate_thread, rclcpp::ExecutorOptions());
break;
}
diff --git a/performance_test/src/system.cpp b/performance_test/src/system.cpp
index 06a1de37..2e93d3e1 100644
--- a/performance_test/src/system.cpp
+++ b/performance_test/src/system.cpp
@@ -40,11 +40,13 @@ System::System(
ExecutorType executor_type,
SpinType spin_type,
const std::optional & events_logger_path,
- const bool csv_out)
+ const bool csv_out,
+ const bool execute_timers_separate_thread)
{
m_executor_type = executor_type;
m_spin_type = spin_type;
m_csv_out = csv_out;
+ m_execute_timers_separate_thread = execute_timers_separate_thread;
if (events_logger_path) {
m_events_logger =
std::make_shared(*events_logger_path, m_csv_out);
@@ -79,7 +81,7 @@ void System::add_node(std::shared_ptr nod
} else {
// Create a new executor with this ID
auto ex = NamedExecutor();
- ex.executor = performance_test::make_executor(m_executor_type);
+ ex.executor = performance_test::make_executor(m_executor_type, m_execute_timers_separate_thread);
ex.executor->add_node(node->get_node_base());
ex.name = node->get_node_name();
diff --git a/performance_test_factory/include/performance_test_factory/cli_options.hpp b/performance_test_factory/include/performance_test_factory/cli_options.hpp
index a48e773f..addc9aa7 100644
--- a/performance_test_factory/include/performance_test_factory/cli_options.hpp
+++ b/performance_test_factory/include/performance_test_factory/cli_options.hpp
@@ -37,6 +37,7 @@ class Options
std::vector topology_json_list;
performance_metrics::Tracker::Options tracking_options;
bool csv_out;
+ bool execute_timers_separate_thread;
};
std::ostream & operator<<(std::ostream & os, const Options & options);
diff --git a/performance_test_factory/src/cli_options.cpp b/performance_test_factory/src/cli_options.cpp
index de141755..1cff48d9 100644
--- a/performance_test_factory/src/cli_options.cpp
+++ b/performance_test_factory/src/cli_options.cpp
@@ -29,6 +29,7 @@ Options::Options()
name_threads = true;
duration_sec = 5;
csv_out = false;
+ execute_timers_separate_thread = false;
resources_sampling_per_ms = 1000;
tracking_options.is_enabled = false;
tracking_options.late_percentage = 20;
@@ -53,6 +54,7 @@ void Options::parse(int argc, char ** argv)
std::string name_threads_option;
std::string tracking_enabled_option;
std::string csv_out_option;
+ std::string execute_timers_separate_thread_option;
options.positional_help("FILE [FILE...]").show_positional_help();
options.parse_positional({"topology"});
options.add_options()("h,help", "print help")(
@@ -73,8 +75,9 @@ void Options::parse(int argc, char ** argv)
std::to_string(
resources_sampling_per_ms)), "msec")(
"x, executor",
- "the system executor:\n\t\t\t\t1:SingleThreadedExecutor. 2:StaticSingleThreadedExecutor",
- cxxopts::value(executor)->default_value(std::to_string(executor)), "<1/2>")(
+ "system executor:\n\t\t\t\t1:SingleThreadedExecutor. 2:StaticSingleThreadedExecutor. \
+ 3:EventsExecutor.",
+ cxxopts::value(executor)->default_value(std::to_string(executor)), "<1/2/3>")(
"n, node", "the node type:\n\t\t\t\t1:Node. 2:LifecycleNode",
cxxopts::value(node)->default_value(std::to_string(node)), "<1/2>")(
"tracking", "compute and logs detailed statistics and events",
@@ -99,7 +102,10 @@ void Options::parse(int argc, char ** argv)
std::to_string(tracking_options.too_late_absolute_us)), "usec")(
"csv-out",
"write comma-delimted results files",
- cxxopts::value(csv_out_option)->default_value(csv_out ? "on" : "off"), "on/off");
+ cxxopts::value(csv_out_option)->default_value(csv_out ? "on" : "off"), "on/off")(
+ "timers-separate-thread",
+ "use separate threads to execute timers",
+ cxxopts::value(execute_timers_separate_thread_option)->default_value(execute_timers_separate_thread ? "on" : "off"), "on/off");
try {
auto result = options.parse(argc, argv);
@@ -125,6 +131,10 @@ void Options::parse(int argc, char ** argv)
if (csv_out_option != "off" && csv_out_option != "on") {
throw cxxopts::argument_incorrect_type(csv_out_option);
}
+
+ if (execute_timers_separate_thread_option != "off" && execute_timers_separate_thread_option != "on") {
+ throw cxxopts::argument_incorrect_type(execute_timers_separate_thread_option);
+ }
} catch (const cxxopts::OptionException & e) {
std::cout << "Error parsing options. " << e.what() << std::endl;
exit(1);
@@ -135,6 +145,7 @@ void Options::parse(int argc, char ** argv)
name_threads = (name_threads_option == "on" ? true : false);
tracking_options.is_enabled = (tracking_enabled_option == "on" ? true : false);
csv_out = (csv_out_option == "on" ? true : false);
+ execute_timers_separate_thread = (execute_timers_separate_thread_option == "on" ? true : false);
}
std::ostream & operator<<(std::ostream & os, const Options & options)
@@ -158,6 +169,7 @@ std::ostream & operator<<(std::ostream & os, const Options & options)
os << "duration_sec: " << options.duration_sec << " seconds" << std::endl;
os << "resources_sampling_per_ms: " << options.resources_sampling_per_ms << std::endl;
os << "csv_out: " << (options.csv_out ? "on" : "off") << std::endl;
+ os << "execute_timers_separate_thread: " << (options.execute_timers_separate_thread ? "on" : "off") << std::endl;
os << "tracking.is_enabled: " << (options.tracking_options.is_enabled ? "on" : "off")
<< std::endl;
diff --git a/scripts/README.md b/scripts/README.md
index a9a9b9e8..0c247c95 100644
--- a/scripts/README.md
+++ b/scripts/README.md
@@ -1,6 +1,6 @@
# Scripts
-This directory contains Python and shell scripts that can be used to automate experiments and andalyze data.
+This directory contains Python and shell scripts that can be used to automate experiments and analyze data.
**IMPORTANT: These scripts are experimental and, currently, not unit-tested. They may be broken.**