Visualeaf← 返回主页

Project · 03 / 04

轻量通信层与多 topic 调度优化

在 Cyclone DDS 上自研轻量发布订阅封装,把关键链路的同机尾延迟从约 3ms 降到 24–29µs。

时间
2026.07
单位
重庆机器人企业 · 算法实习
阶段
工程原型 · 同机与跨机验证
我的角色
负责 Cyclone DDS 之上的通信封装、调度优化、性能诊断与跨平台部署
3ms→24–29µs多 topic 下关键链路的同机尾延迟测试条件同机 x86;1 个 1kHz 关键 topic 加 1–31 个 300Hz 背景 topic;关键 topic 独占线程、背景共享,对照全共享执行器;6 轮 p99 中位数
146 / 167µs跨机 RTT 中位数:封装执行器 / ROS2测试条件x86 与 arm64 千兆网络、GamepadState、RELIABLE、同步单在途,5 轮中位数;ROS2 的抖动更低(5.8µs 对 9.3µs)
A

结构一览

  1. .msg 定义统一生成 IDL 与 C++ 类型适配
  2. 发布订阅封装兼容 ROS2,不依赖其运行栈
  3. 订阅调度关键 topic 独占 · 背景共享
  4. Cyclone DDSRELIABLE
  5. 同机 / 跨机x86 ↔ arm64 · ROS2 互通

单向与往返结果不自洽 → 发现测量口径错误;跨机改用同端时钟测 RTT

B

我做了什么

C

结果

同机多 topic 测试中,全共享执行器一旦出现背景 topic,关键链路 p99 就从约 27µs 升到约 3ms;关键 topic 独占、背景共享后,1 到 32 个 topic 全程稳定在 24–29µs,与每个 topic 都独占线程几乎相同。

跨机千兆网络下,封装执行器的 RTT 中位数约 146µs,ROS2 执行器约 167µs;ROS2 的抖动更低。

同机回环中,绑核后产品执行路径的 RTT p99 为 4.665µs。测量审计时,旧测法约 116µs 与对照探针约 8.7µs 相差约 13 倍,这是测法修正暴露的差异,不是性能提升。

D

测量数据

多 topic 下关键链路 p99
101001k10k12481632封装 · 全共享 · 1 个 topic:26.9µs封装 · 全共享 · 2 个 topic:3205.1µs封装 · 全共享 · 4 个 topic:3100.3µs封装 · 全共享 · 8 个 topic:3064µs封装 · 全共享 · 16 个 topic:3332.4µs封装 · 全共享 · 32 个 topic:3041.6µs封装 · 关键独占 / 背景共享 · 1 个 topic:25µs封装 · 关键独占 / 背景共享 · 2 个 topic:25.5µs封装 · 关键独占 / 背景共享 · 4 个 topic:29.1µs封装 · 关键独占 / 背景共享 · 8 个 topic:24.4µs封装 · 关键独占 / 背景共享 · 16 个 topic:26.7µs封装 · 关键独占 / 背景共享 · 32 个 topic:24.1µs封装 · 全独占 · 1 个 topic:27.7µs封装 · 全独占 · 2 个 topic:26.7µs封装 · 全独占 · 4 个 topic:26.3µs封装 · 全独占 · 8 个 topic:23.8µs封装 · 全独占 · 16 个 topic:26.3µs封装 · 全独占 · 32 个 topic:23.5µsROS2 · 全共享 · 1 个 topic:86.4µsROS2 · 全共享 · 2 个 topic:41.5µsROS2 · 全共享 · 4 个 topic:50.9µsROS2 · 全共享 · 8 个 topic:49.3µsROS2 · 全共享 · 16 个 topic:48.7µsROS2 · 全共享 · 32 个 topic:56.5µsp99(µs,对数刻度)topic 数(1 个关键 + 其余背景)
  • 封装 · 全共享
  • 封装 · 关键独占 / 背景共享
  • 封装 · 全独占
  • ROS2 · 全共享

同机 x86、performance governor;1 个 1kHz 关键 topic,其余为 300Hz 背景 topic。每个点是 6 轮 p99 的中位数,不是逐消息分布。

跨机往返延迟
050100150200裸路径裸路径 p50:143.9µs143.9裸路径 p99:169.1µs169.1封装执行器封装执行器 p50:145.6µs145.6封装执行器 p99:176.4µs176.4ROS2 执行器ROS2 执行器 p50:166.8µs166.8ROS2 执行器 p99:184.7µs184.7往返延迟(µs)
  • p50
  • p99

x86 ↔ arm64 千兆网络,GamepadState、RELIABLE,5 轮中位数;全程 RTT,没有除以 2 当作单向延迟。

!

已知局限

← 返回全部项目