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.**