鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    如何配置ros2中间件fastdds,使其传输性能接近原生tcp的性能

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    ros2jazzy fastdds2.14.0 cpu负载 性能优化
    3
    4
    654
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • minemyemailsM
      minemyemails
      最后由 编辑

      此回复已被删除!
      小鱼小 1 条回复 最后回复 回复 引用 0
      • minemyemailsM
        minemyemails
        最后由 编辑

        此回复已被删除!
        1 条回复 最后回复 回复 引用 0
        • 小伊小
          机器人小伊
          最后由 编辑

          在尝试进一步优化FastDDS(即Fast RTPS,DDS的实时发布-订阅协议实现)以接近TCP的性能时,你可以从几个不同的角度入手。以下是一些建议,可以帮助你进一步降低FastDDS的CPU负载,并可能提高其传输效率,以更接近TCP的性能:

          1. 优化QoS设置

          a. 调整历史数据保持策略

          • HistoryQosPolicy:设置为KEEP_LAST_HISTORY_QOS并限制历史样本数量,这可以减少内存使用和潜在的CPU开销。
          • DurabilityQosPolicy:如果不需要持久化,可以设置为VOLATILE,避免额外的磁盘IO或内存管理开销。

          b. 减少可靠性开销

          • ReliabilityQosPolicy:对于非关键数据,可以考虑将可靠性设置为BEST_EFFORT,这将减少重传和确认的开销。

          c. 进一步优化传输设置

          • TransportQos:确保send_socket_buffer_size和listen_socket_buffer_size设置得足够大,以避免频繁的系统调用和内存复制。
          • NonBlockingSend:如果已设置为true,则无需更改。这有助于减少发送时的阻塞时间。

          2. 线程和内存管理

          • 线程池大小:确保FastDDS使用的线程池大小是合适的。过多的线程会增加上下文切换的开销,而过少的线程则可能导致线程饥饿。
          • 内存分配:使用预分配或内存池可以减少动态内存分配的开销。

          3. 网络设置

          • MTU大小:确保网络MTU(最大传输单元)与FastDDS的配置相匹配,以减少数据包碎片。
          • 网络拥塞控制:评估并可能调整网络层面的拥塞控制算法,以确保网络带宽得到高效利用。

          4. 数据序列化

          • 序列化效率:检查数据类型的序列化效率。如果可能,使用更紧凑的序列化格式(如Protocol Buffers、FlatBuffers等)代替默认的序列化方式。

          5. 分析和调优

          • 性能分析工具:使用性能分析工具(如Valgrind、gprof、SystemTap等)来识别瓶颈。
          • 日志和监控:增加日志记录级别以获取更多关于系统行为的详细信息,并使用监控工具跟踪关键性能指标。

          6. 评估和测试

          • 基准测试:进行系统的基准测试,以比较不同配置下的性能表现。
          • 压力测试:在高负载下测试系统,以评估其稳定性和性能。

          结论

          尽管FastDDS和TCP在设计和用途上有所不同,但通过精心配置和优化,你可以使FastDDS的性能更接近TCP。上述建议提供了一个起点,但具体的优化措施可能需要根据你的具体应用场景和性能需求进行调整。务必进行充分的测试和评估,以确保优化措施的有效性。


          以上为生成回答,仅供参考~

          我是小伊,已接入ChatGpt,所有回复,仅供参考~

          1 条回复 最后回复 回复 引用 0
          • minemyemailsM
            minemyemails
            最后由 编辑

            此回复已被删除!
            1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @minemyemails
              最后由 编辑

              @minemyemails 建议先想办法测试下,在哪里消耗了时间片,另外有没有更完整的测试代码,好像没看到有没有序列化数据相关操作。

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              1 条回复 最后回复 回复 引用 0
              • minemyemailsM minemyemails 将这个主题标记为已解决,在
              • 第一个帖子
                最后一个帖子
              皖ICP备16016415号-7
              Powered by NodeBB | 鱼香ROS