ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Fast DDS v2.2.0 latency performance

Hi everyone!

Today, we are happy to present to you our recent performance tests of Fast DDS v2.2.0!

In this first part, we focused only on latency for the new delivery mechanisms included. In the up-coming second part, we will take a closer look at the throughput performance. For the complete performance test and more details, check out the article “eProsima Fast DDS Performance”.

Important to mention is that we tested only in the synchronous publication mode. For more information on that and asynchronous publication, visit this article.

Intra-process Delivery

Zero-copy intra-process delivery is made possible thanks to sample loaning on both DataWriter and DataReader.

Fast DDS v2.2.0 Intraprocess Reliable

Fast DDS v2.2.0 Intraprocess Reliable (just zero-copy)

Inter-process Shared Memory

In Fast DDS v2.2.0, we introduced new delivery mechanisms: SHM (Loans), SHM (Data Sharing) and SHM (zero-copy). More on that on my last post.

Fast DDS v2.2.0 SHM Reliable

UDP Transport

Fast DDS v2.2.0 UDP Reliable

Summary

In conclusion, we can see that, thanks to a proper data model design, Fast DDS v2.2.0 has considerably improved its performance, being capable of maintaining the latency stable no matter the data sample size. In fact, it can be seen that the vast majority of the latency overhead is caused by the data copies from buffer to buffer. Because of this, the larger the data samples, the greater the latency improvements that can be achieved.

As mentioned earlier, in part two of the performance testing, we will look at the throughput, so stay tuned!

6 Likes

Hi everyone,

Following up this post, we have published Fast DDS v2.2.0 throughput performance results.

Hi,

Thanks for the info,

How would one proceed to enable Zero Copy in ROS2 (using Foxy for instance) ? I could successfully build eProsima Fast DDS as well as the ZeroCopy examples, and we would like to benchmark zerocopy for node communication in ROS2, but I am not sure what I should set in order to enforce ZeroCopy when possible.

Thanks for your help,