Skip to content
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

Best effort + fragmentation + OS X = no images #93

Closed
dhood opened this issue Mar 1, 2017 · 5 comments
Closed

Best effort + fragmentation + OS X = no images #93

dhood opened this issue Mar 1, 2017 · 5 comments
Labels
question Further information is requested

Comments

@dhood
Copy link
Member

dhood commented Mar 1, 2017

@richiprosima @JaimeMartin, we are trying to understand why particular conditions impact the reception of best effort data.

For high-bandwidth data, we have found a difference in performance on different operating systems. For example, with a single publisher publishing images (320x240 image x 1 byte/channel x 3 channels @ 30fps) and receiving them on the same machine with "best effort" reliability, it will work fine on linux, but not at all on OS X (no images are received).

  1. Using a throughput controller, as you have suggested in Low bandwith when using FastRTPS #81 and Magic numbers in serialization #36, will fix the performance on OS X, but we are trying to understand (1) why there is a difference between operating systems and (2) if there is an alternative solution, since enabling the throughput controller will limit the rate at which users can receive data.

  2. Instead of a throughput controller, disabling multicast on subscribers as suggested in this comment improves performance but only slightly.

  3. Surprisingly, performance can be improved even without a throughput controller or disabling multicast, if the publishing frequency is increased from 30fps to 100fps. At 30fps, 0 messages are received, but at 100fps, ~20% of messages are received, at 250fps, ~40% of messages are received...

Do you have an idea of what causes the messages to have low reception rates even with a single sender, and the receiver on the same machine?
@wjwwood has suggested that perhaps "the kernel's udp buffer is getting overwhelmed by the bursty nature without the flow controller" but you may have more insight given your experience.

Do you know why reception rate improves with higher publishing frequency? Thanks in advance.


To reproduce using our image demo (on OS X):

$ cam2image -b -r 0 -f 30
$ showimage -s 0 -r 0
@dhood dhood added the question Further information is requested label Mar 1, 2017
@richiprosima
Copy link
Contributor

@dhood I was able to reproduce it in a VM. I will try to identify the problem. Thanks.

@mikaelarguedas
Copy link
Member

@dhood & @richiprosima any update on this ?

@richiprosima
Copy link
Contributor

I've tested again in my VM with last version of Fast RTPS and it has good performance. Maybe @dhood may check it too.

@mikaelarguedas
Copy link
Member

Thanks @richiprosima for the prompt response!
I'll leave it to @dhood to test and comment or close this issue accordingly

@dhood
Copy link
Member Author

dhood commented Aug 4, 2017

yep looks fixed thanks!

@dhood dhood closed this as completed Aug 4, 2017
dhood added a commit to ros2/demos that referenced this issue Aug 4, 2017
ros2/rmw_fastrtps#93 has been closed and flow
controllers are no longer a requirement for this to pass.
dhood added a commit to ros2/demos that referenced this issue Apr 19, 2018
ros2/rmw_fastrtps#93 has been closed and flow
controllers are no longer a requirement for this to pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants