当前位置: 首页 > news >正文

Fast-DDS Benchmark 参考结果与验收目标

Fast-DDS 自带LatencyTestThroughputTest性能测试工具,位于test/performance/latencytest/performance/throughput。当前仓库中可以看到 SHM、UDP、TCP、reliable、best effort 等 profile,例如:

  • latency_interprocess_best_effort_shm_profile.xml
  • latency_interprocess_reliable_shm_profile.xml
  • latency_interprocess_best_effort_udp_profile.xml
  • latency_interprocess_reliable_udp_profile.xml
  • throughput_interprocess_best_effort_shm_profile.xml
  • throughput_interprocess_reliable_shm_profile.xml
  • throughput_interprocess_best_effort_udp_profile.xml
  • throughput_interprocess_reliable_udp_profile.xml

因此,设计上可以明确分成两类测试:

  • 同机测试:两个进程在同一台机器上运行,启用 SHM transport、data sharing 和可选 zero-copy / loaned sample。
  • 跨机器测试:publisher 和 subscriber 分别运行在两台机器上,关闭 shared memory,使用 UDP 或 TCP transport。

需要注意:Fast-DDS 官方 benchmark 文档中的数值是测试工具示例或官方 CI/benchmark 方法下的参考量级,不等同于项目目标硬件、目标内核、目标网络的最终结果。项目实时性验收必须在目标控制器上复测。

官方 LatencyTest 示例结果

Fast-DDSLatencyTest示例表给出的往返延迟结果如下,单位为微秒。该测试一次发送一个 sample,等待对端 echo 后统计 round-trip latency。

PayloadSamplesMeanMin50%90%99%99.99%Max
16 B100001.2791.1061.2631.3582.5096.9327.261
1 KB100001.6781.0781.1452.3992.53817.37317.862
63 KB100005.6414.5744.7447.57412.18931.38545.567
1 MB1000069.11058.91362.67182.916140.723447.954458.905

这些数据说明,在 Fast-DDS benchmark 的理想路径中,小数据包延迟可以达到数微秒级,大块 1 MB 数据的 99% 延迟也在百微秒量级。对于项目变量访问场景,普通标量变量和小结构体通常落在 16 B 到 1 KB 范围,理论上适合放入同机 SHM / data sharing 路径;大数组、波形、结构体快照应尽量使用 bounded plain type + loaned sample / zero-copy。

官方 ThroughputTest 示例结果

Fast-DDSThroughputTest示例表给出的 1 KB payload 吞吐结果如下:

PayloadDemandRecoverySubscriber samples/sSubscriber throughputLost samples
1 KB100005 ms401129 samples/s3286.052 Mb/s0

官方自动化 benchmark 文档中的吞吐汇总示例还展示了更高的数据通路能力,典型片段如下:

PayloadDemandRecoverySubscriber samples/sSubscriber throughputLost samples
16 B300000 ms1825238 samples/s233.631 Mb/s0
128 B300000 ms1810586 samples/s1854.041 Mb/s0
1 KB5000020 ms1706558 samples/s13980.126 Mb/s0
2 KB500000 ms1628671 samples/s26684.149 Mb/s0
4 KB10000 ms1420534 samples/s46548.068 Mb/s0
8 KB5000020 ms992278 samples/s65029.970 Mb/s0

这些吞吐数字已经超过普通物理网卡能力,通常只能理解为同机内存路径、intra-process、SHM 或>同机 SHM 的预期实时性

基于上述 benchmark 量级,同机 shared memory / data sharing 路径可作为实时数据面的首选方案。

建议本项目验收目标如下:

场景PayloadQoS建议验收目标
标量变量帧16 B 到 256 BBest effort, keep last 1P99 延迟小于 10 us
小型变量组1 KBBest effort, keep last 1P99 延迟小于 20 us
中型结构体/数组64 KBBest effort 或 reliableP99 延迟小于 100 us
大块波形/快照1 MBBest effort 或 reliable + zero-copyP99 延迟小于 500 us
1 KB 高频吞吐1 KBBest effort大于 300k samples/s,0 丢包

如果运行在 PREEMPT_RT、CPU 绑定、内存锁定、DDS 预分配和 zero-copy 配置完整的目标控制器上,上述目标有机会达到;如果运行在普通 Linux 调度策略、系统负载较高或仍使用 Variant/string 动态分配,P99 和最大延迟会明显变差。

跨机器 UDP/TCP 的预期实时性

跨机器通信不能使用 SHM transport 或 data sharing,实际结果主要受物理链路、交换机、网卡驱动、中断绑定、MTU、QoS、组播策略和网络负载影响。Fast-DDS 可以用 UDP/TCP transport 统一数据模型和 QoS,但跨机器实时性不可能达到同机 SHM 的微秒级结果。

建议项目按目标网络给出验收目标:

网络PayloadTransport/QoS建议验收目标
千兆以太网直连或工业交换机16 B 到 256 BUDP best effort, keep last 1P99 延迟小于 1 ms
千兆以太网直连或工业交换机1 KBUDP best effort, keep last 1P99 延迟小于 1 ms,吞吐大于 500 Mb/s
千兆以太网直连或工业交换机64 KBUDP best effort 或 reliableP99 延迟小于 5 ms
千兆以太网,可靠命令小命令帧UDP/TCP reliable请求响应 P99 小于 10 ms
百兆以太网1 KBUDP best effort吞吐目标按链路上限降至 60 到 90 Mb/s

跨机器场景下,高频实时变量建议只发布必要变量组,不发布全量点表;全量在线变量、历史数据、波形数据应单独 Topic、单独 QoS、单独限流,避免挤占控制数据。

项目推荐 benchmark 命令

编译 Fast-DDS 性能测试工具:

colcon build --cmake-args-DPERFORMANCE_TESTS=ON

同机 SHM 延迟测试:

LatencyTest subscriber--domain10--reliability=besteffort--shared_memory=on--data_sharing=on--echo=true LatencyTest publisher--domain10--reliability=besteffort--shared_memory=on--data_sharing=on--samples=10000--file=payloads.csv

同机 SHM + loaned sample 吞吐测试:

ThroughputTest subscriber--domain11--reliability=besteffort--shared_memory=on--data_sharing=on--data_loadThroughputTest publisher--domain11--reliability=besteffort--shared_memory=on--data_sharing=on--data_load--time=10--recovery_time=0--demand=10000--msg_size=1024

跨机器 UDP 延迟测试:

# 机器 ALatencyTest subscriber--domain12--reliability=besteffort--shared_memory=off--echo=true# 机器 BLatencyTest publisher--domain12--reliability=besteffort--shared_memory=off--samples=10000--file=payloads.csv

跨机器 UDP 吞吐测试:

# 机器 AThroughputTest subscriber--domain13--reliability=besteffort--shared_memory=off# 机器 BThroughputTest publisher--domain13--reliability=besteffort--shared_memory=off--time=10--recovery_time=0--demand=10000--msg_size=1024

测试时至少记录以下信息:CPU 型号、核心数、是否 PREEMPT_RT、网卡型号、链路速率、是否直连、交换机型号、MTU、Fast-DDS 版本、QoS profile、payload、samples、mean、P50、P90、P99、P99.99、max、lost samples 和吞吐。

http://www.jsqmd.com/news/825317/

相关文章:

  • 快速上手Redis
  • Newhaven 5.0英寸TFT显示屏技术解析与应用指南
  • 终极免费暗黑破坏神2存档编辑器:d2s-editor完全使用指南
  • Arduino开源贡献全流程:从Fork到Pull Request的工程实践
  • 【限时解密】DeepSeek官方未公开的MATH测试阈值数据:仅Top 3.8%模型通过CoT一致性压力测试
  • Arm Neoverse CMN-650架构解析与系统地址映射实践
  • 人工智能【第29篇】AI前沿技术展望:多模态学习、Agent与AGI
  • 互联网大厂 Java 求职面试:从 Spring Boot 到微服务与云原生的技术探讨
  • 智能体协作框架call-agents-help:构建多AI模块协同系统的工程实践
  • Unlock-Music终极指南:3种简单方法免费解锁12种加密音乐格式
  • 【V0.1B9】从零开始的2D游戏引擎开发之路
  • 量子电路仿真加速器QEA的FPGA实现与优化
  • 嵌入式Linux动态引脚复用实战:RK3568 GPIO与I2C功能切换详解
  • NVM管理速记(不是官方文档不好,而是笔记更有性价比)
  • 大模型KV缓存量化技术:原理、优化与实践
  • OpenShart:开源AI智能体开发框架,简化LLM应用构建
  • 基于 YOLO11-OBB 与 LPRNet ONNX 的车牌定位识别桌面系统实践
  • 167.YOLOv8口罩检测常见问题避坑(loss为NaN/显存溢出/ONNX导出失败实战版)
  • AI智能体信用评分系统:构建可评估、可管理的多智能体协作框架
  • NomNom完整指南:No Man‘s Sky终极存档编辑器
  • 基于CRICKIT与蓝牙的双足机器人:从机械原理到手机遥控实践
  • 新一代ROG NUC发布!性能释放超 300W,白色版本惊艳登场!
  • 2026年5月更新:探寻番禺实木家具保养直销工厂的可靠标杆 - 2026年企业推荐榜
  • 企业托管服务器不完全指南
  • 2025最权威的十大降AI率工具推荐
  • okbiye AI 写作新思路:毕业论文终稿一站式落地,不用熬夜硬熬
  • Orange Pi 3B对比树莓派3:边缘计算与物联网网关的性价比之选
  • 幽默面试:Java SE 与微服务的探讨
  • PointLLM:三维点云与大语言模型融合,实现视觉语言理解新突破
  • AI开发工作流