-
Notifications
You must be signed in to change notification settings - Fork 116
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
Low bandwith when using FastRTPS #81
Comments
@vilhjalmur89 thanks for the report. We've tried debugging this a few times in the past and we're still iterating with the Fast-RTPS guys to get some default settings that work good in these cases. Can you post what settings (command line arguments) you're using for the This has to do with the default flow control settings I think (not sure though). You can see more about that discussion here: #36 (comment) Hopefully we can improve this use case moving forward. Since my experience with opensplice and connext have been pretty good with this demo, I think we just need to zero in on some better default settings for Fast-RTPS. @richiprosima may have other suggestions for you. |
@wjwwood I just ran the commands without any arguments, but by reducing the resolution to 160x90 and the frame rate to 10 FPS, I get a stable stream. That is about 400 KB/s (each image is around 40KB), and anything larger results in lagging. I noticed that when lagging occurs, the publishing node also slows down. Are publishers not asynchronous by default? That seems to be the case with OpenSplice, that large images may be delayed or dropped, but the publisher is unaffected. |
I am having a similar issue when trying to run the turtlebot follower demo. The Astra node publishes VGA resolution floating point depth images at a reasonable rate (based on printfs at publish). When I start the follower node, which subscribes to the depth images, both the astra node and the follower node slow down to a frame every 7 seconds. (Again timings based on printfs). |
@vilhjalmur89 I had the same experience on Linux when trying |
I've tested beta 1 The environment I used was:
|
Sorry, I've appreciated the delay increasing the resolution of the image. I will check this. Thanks |
The problem is caused by two facts:
|
I guess that these changes are the reason why so many new test failure across all platforms came up this morning: http://ci.ros2.org/job/ci_linux/2110/ http://ci.ros2.org/job/ci_osx/1628/ http://ci.ros2.org/job/ci_windows/2122/ |
Sorry. I only checked our CI. I solved it and ran in your Linux environment. I hope these new changes solve your CI jobs. Thanks @dirk-thomas |
I reran a few of the nightly jobs and they still fail many tests. I haven't looked further at them yet: http://ci.ros2.org/view/nightly/job/nightly_linux_debug/307/ http://ci.ros2.org/view/nightly/job/nightly_osx_debug/307/ http://ci.ros2.org/view/nightly/job/nightly_win_rel/284/ |
Removing multicast by default, interoperability with RTI appears to be broken. I was checking and found RTI is using the global user multicast locators that are sent by Fast RTPS participant, and not the locators sent by Fast RTPS reader. |
Looks much better: http://ci.ros2.org/job/ci_linux/2132/ http://ci.ros2.org/job/ci_osx/1634/ http://ci.ros2.org/job/ci_windows/2137/ Thank you for the update. I will merge ros2/ros2#300 then to use |
Returning to the topic of this issue. Could someone check there are improvements using new changes in Fast RTPS and increasing heartbeat period in |
I just ran the two separate processes |
i have noticed that performance is highly dependent on the network, if I am connected to a LAN it works much better. (I am running nodes on the same machine though) Furthermore, if I am not connected to a network, demos do not start at all. I also tried image_pipeline_all_in_one, same behavior. |
Hi @rameezl, are you using the master last version of Fast RTPS? I'm looking for what could be producing this issue, could you provide more information about what settings are you using and if you have changed or not the heartbeat period as proposed by @richiprosima? |
Hi @JavierIH I just pulled from master branch of Fast RTPS and applied settings proposed by @richiprosima. I do not see the delay now and its much better, my settings: Also, changing from my local network to WAN does not cause performance degradation anymore but the subscriber still stalls if the network is changed or disconnected in between. The coupling with the network connection is present even in case of intra-process communication. In case of image_pipeline_all_in_one, the delay is lot more almost two seconds! |
I've been having similar problems using the cam2image and showimage test programs in ROS2 with Fast-RTPS. In my case, I was using the default 320x240 resolution for cam2image, and the behavior I saw was to get a bunch of publications, then have a long delay (15-20 seconds), then get another bunch of publications, etc. I uncommented the lines in rmw_fastrtps that set the heartbeat to 10ms as suggested by @richiprosima , and things are much better. I don't get the queueing behavior, and the data is streaming at 1280x960@30fps (though there is still some lag in the stream). So that looks to improve the situation a lot for me. Is that change something we want to get landed in the code? What's the downside to doing so? |
Indeed the value of the heartbeat period does influence a lot the performance according to the application. I'm not sure that changing the default to 10ms for any created topic is the way to go. While it would improve the performance of high throughput-high bandwidth applications, it will flood the network for any kind of large scale system (many nodes) with sporadic or low frequency communication. We discussed in the past exposing more qos settings through the Does anyone know what is the heartbeat period of this demo on connext? |
It seems like Connext may have a different scheme for specifying the heartbeat (at least at a glance): https://community.rti.com/content/forum-topic/piggyback-heartbeat-period |
As @wjwwood comments, Connext has two heartbeat mechanisms. Heartbeat period and heartbeat piggyback. The second one introduces an extra heartbeat depending on the batch of data sent. As much data is send, more heartbeats are included. |
@vilhjalmur89 Is this still a problem ? Fast-RTPS now provides a piggyback heartbeat and I cannot reproduce this issue as of beta2 |
Closing this for now due to no response. Please feel free to comment on the closed ticket and it can be reopened if necessary. |
I'm experiencing problems with most messages that are more than a few kilobytes per second when using FastRTPS.
For example, I just built Ros2 from source on Ubuntu 16.04 and tried running
showimage
in one terminal, andcam2image
in another. I can see images from my webcam, but they are delayed and I get around 1 frame per second.This also happens with downloaded binaries, but it works fine with opensplice.
The talker/listener demo and other low-bandwidth demos seem to work fine.
The text was updated successfully, but these errors were encountered: