-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug] Performance drop routing 1kHz publications since 0.11.0 #192
Comments
I've been running some tests to give more details about this. These are the plots of the ros2 topic hz command on the different scenarios: ROS2DDS bridge v0.11.0-rc.2 (latest version 1.0.0 has a bug reported here) DDS bridge v0.10.1-rc (latest version 1.0.0 has a performance decrease reported here) ROS2DDS bridge compiled with branch fix_190 (#191) Conclusions:
Some doubts:
|
Thanks for your explanation. I managed to reproduce the issue and I'm analysing. First, I actually get the same issue with both Digging further, when connecting "pure" Zenoh subscriber directly to the bridge on DDS publication side, it well receives the publications at 1000Hz. This means the issue is somewhere in the DDS stacks between the bridge and the DDS Reader. I'm now digging further with the help of CycloneDDS team. |
If the
We're in the process of building such tools, but they're not yet available. |
The culprit is commit 7275cc4 which bumps Zenoh version to a commit just after the change of async library from Looking at Wireshark capture, I clearly see a weird behaviour of CycloneDDS when publishing the 1000Hz traffic received via Zenoh:
With previous commit with Zenoh using It looks like some scheduling issue preventing CycloneDDS to run smoothly. |
Hi @JEnoch ! Glad to know you've been able to reproduce the issue and detect the origin !! Thanks for addressing it that quick. It's not clear to me then if this is a problem that could be addressed in this repository or if it's something to fix on CycloneDDS. I will test ros2dds with a version previous to 0.11.0 meanwhile that I haven't done.
Is by defualt the connect section empty? I can improve my question. By using the config files above and only adding this section to the router bridge (and leaving the client as it is), do I ensure it ? Imagine that IP correspond to a specific network interface but PCs can connect between them through more than 1 eventually including wifi. I want to be sure traffic is limited to a specific one. And by the way, is there a way of specifying the NIC instead of the IP ?
That would be awesome ! To have an idea of the performance and limitations and evetually detect if there are problems with the network or if we're reaching the edge of the capabilities of either the tool, network etc. |
Likely in this repo. Possibly in Zenoh repo. BTW, I'm taking some vacations now 😎
Yes, if
If you let
Yes... but only since |
After some vacations 😎 and then further analysis, I found the root cause of the problem and a solution: Actually the switch from With The solution: @franz6ko Your test should work with the latest commit from |
Zenoh has now been fixed (in branch This repo will be sync to use the fixed Zenoh version in branch |
Great to hear!! Thanks for your support. I'm happy to have contributed to this issue. |
Describe the bug
I've been doing some simple test bridging only 1 simple topic at a rate of 1000Hz using zenoh-bridge-dds and zenoh-bridge-ros2dds between the ROS_DOMAIN 0 and 1 locally.
With the DDS bridge I get the 1000Hz but with the ROS2DDS bridge I only get around 50Hz
To reproduce
Start 2 zenoh-bridge-dds instances with the following configurations:
Publish a topic on ros domain 0over /position with a rate of 1000Hz
Run a "ros2 topic hz /position"
Repeat the same but with 2 zenoh-bridge-ros2dds instances with the following configurations:
System info
Ubuntu 20.04
ROS2 Foxy
The text was updated successfully, but these errors were encountered: