Fast-DDS icon indicating copy to clipboard operation
Fast-DDS copied to clipboard

[21617] Inconsistent network throughput with LARGE_DATA

Open mode89 opened this issue 6 months ago • 8 comments

Is there an already existing issue for this?

  • [X] I have searched the existing issues

Expected behavior

I expect amount of network traffic generated by FastDDS in LARGE_DATA mode to be almost the same as the payload (ROS message size multiplied by publishing rate).

Current behavior

Occasionally, generated network traffic exceeds estimated payload throughput.

There no consistency in how often it happens: on some days it could happen on half of the runs, on other days - maybe one out of ten runs.

Surprisingly, whenever network traffic exceeds the estimated value, it is always almost exactly 3 times higher.

Steps to reproduce

Set up two computers connected via Ethernet. Run publisher on one computer and subscriber on another computer. Publish large messages. Observe network throughput.

Fast DDS version/commit

I use ROS Jazzy, which currently bundles Fast DDS v2.14.1. I also tried ROS Humble with Fast DDS v2.14.3 - same behavior.

Platform/Architecture

Other. Please specify in Additional context section.

Transport layer

TCPv4

Additional context

In my experiments, the publisher is an embedded ARM64 platform:

  • 8 core Cortex-A78C, 2.4 GHz
  • 8 GB RAM
  • Red Hat Linux
  • Kernel 5.14.0

Subscriber runs on a desktop PC:

  • 24 core AMD Ryzen 9 7900, 5 GHz
  • 64 GB RAM
  • NixOS 24.05
  • Kernel 6.6.40

Computers connected through 1 Gbps switch.

Both computers build ROS2 (with FastDDS) from source code through Nix package manager. I didn't apply any extra patches to FastDDS.

On publisher side, net.core.wmem_max = 200000000. On subscriber side: net.core.rmem_max = 200000000.

I emulated two kinds of payload:

  • Point cloud: 180000 points, 4 f32 fields per point, 10 Hz. Estimated throughput: 180000 * 4 * 4 * 10 ~ 28 MB/s
  • Images: 200 x 200, RGB8, 25 Hz. Estimated throughput: 200 * 200 * 3 * 25 ~ 3 MB/s

XML configuration file

<?xml version="1.0" encoding="UTF-8" ?>
<dds xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
    <profiles>
        <participant
            profile_name="large_data_builtin_transports_options"
            is_default_profile="true">
            <rtps>
                <builtinTransports
                    max_msg_size="10MB"
                    sockets_size="200MB"
                    non_blocking="true">LARGE_DATA</builtinTransports>
            </rtps>
        </participant>
    </profiles>
</dds>

Relevant log output

No response

Network traffic capture

No response

mode89 avatar Aug 16 '24 01:08 mode89