Replies: 2 comments 8 replies
-
Thank you for information 👍 However, it is difficult to decide which is better, as it depends on the product requirements as to what kind of MRM you want to trigger at what time. |
Beta Was this translation helpful? Give feedback.
-
Here's my two cents:
I would like to see the numbers on this. IPC shines when transferred data is heavy (point cloud, image). I think today most of the components manipulating heavy data are already together. I am not sure there is any significant performance improvement when exchanged data is small.
Same, I would like to see numbers here too. For instance, if you run autoware twice, once with the current components, once with everything in one container, do you see a significant difference in memory usage?
This is a big issue, because crash happen, and won't disappear anytime soon. If the gnss poser crashes, you still want lidar localization to work, planning to find safe trajectories and emergency module to stop the vehicle when necessary. |
Beta Was this translation helpful? Give feedback.
-
https://docs.ros.org/en/humble/Tutorials/Intermediate/Composition.html
Component containers removes the network overhead between nodes by using intra-process communication. Thus it makes the overall system more efficient.
When running AWSIM demo, there are 16 component containers. I think this is too many, especially considering the containers with only a single node loaded.
Why don't we put all nodes into a single
autoware_component_container
?What are the downsides of such a change?
I can list some pros and cons of such an action:
Pros
Reduced Inter-Process Communication (IPC) Overhead: With all nodes running in a single process, the need for inter-process communication would be nearly eliminated. This can improve performance, especially when there is a high frequency of messages between nodes. This will help reduce the potential additional bandwidth when we introduce heartbeats and monitoring to all of the nodes.
Simplified Management: With a single container to manage, starting, stopping, and monitoring the system can become simpler.
Memory Efficiency: Running all nodes in a single process can sometimes result in better memory usage, as there's only one instance of the ROS2 runtime and potentially fewer duplicated resources.
Cons
Single Point of Failure: If one node crashes or there's an error in the process, it can potentially bring down all nodes in the container.
- I think this is a good opportunity to create a parallel system which is much simpler than Autoware and focuses on emergency behaviors. But needs to be discussed more.
Resource Contention: All nodes in the same process would share the same memory and CPU resources. If one node becomes resource-hungry, it could negatively impact the performance of other nodes.
Complexity: Merging all nodes into a single container might initially seem like a simplification, but it can introduce complexity when trying to isolate specific nodes for debugging or when adding new nodes to the system.
I would like to hear your opinions about combining all into a single component container too.
cc. @VRichardJP @mitsudome-r @TakaHoribe @miursh @isamu-takagi @yukkysaito @kaancolak @mehmetdogru @esteve
Beta Was this translation helpful? Give feedback.
All reactions