ros2 / rmw_iceoryx

rmw implementation for iceoryx
Apache License 2.0
156 stars 27 forks source link

Add event queue executor support. #52

Open ZhenshengLee opened 3 years ago

ZhenshengLee commented 3 years ago

Brief feature description

Event queue executor was introduced recently by iRobot team as a strong mean to reduce the cpu overhead and latency by rclcpp layer.

See https://github.com/ros2/design/pull/305 for details.

AFAK, event queue executor + rmw_iceoryx + zenoh(mentioned in https://github.com/eclipse-iceoryx/iceoryx/issues/869) is much more performant than current default ros2 layers, both in latency and cpu usage.

So event queue executor would be implemented in rmw_iceoryx, perhaps in the rolling branch.

First of all, may galactic and rolling branch being created based on foxy branch?@Karsten1987 @budrus

Thanks.

budrus commented 3 years ago

@ZhenshengLee rolling branch could be the master branch, or? Indeed, we saw recently from measurements with G and zero-copy that for payloads < 64k the default executor has a higher impact on latency than the copies you have when not doing zero-copy

ZhenshengLee commented 3 years ago

@budrus

rolling branch could be the master branch

You are right, master branch can be used when foxy branch be merged into master, and galactic branch is needed anyway.

Indeed, we saw recently from measurements with G and zero-copy that for payloads < 64k the default executor has a higher impact on latency than the copies you have when not doing zero-copy

I've git it a test using APEX's performance_test tool(see custom version https://github.com/ZhenshengLee/performance_test/commit/c71666d04935572e634203ea951b7f5fa3cc5f8c), and cpu usage reduced about 40% in the test below.

./colcon/install/performance_test/lib/performance_test/perf_test -c rclcpp-events-executor --msg Array1k -p 1 -s 10 -l log_sub
./colcon/install/performance_test/lib/performance_test/perf_test -c rclcpp-single-threaded-executor --msg Array1k -p 1 -s 10 -l log_sub

Thanks.

mossmaurice commented 3 years ago

@ZhenshengLee I created the galactic branch and raised a PR. Will update master to work with rolling.