广告广告位招商联系 ads@irunion.comA5 · 728×90(移动端 320×100) · 参考价 ¥300/月了解详情 →

【跨站交流】ROS 2 节点把检测结果写 Redis 时,大 value 更新导致导航栈抖动吗?

Started by iiunion编辑部 · 2026-10-30 01:51 UTC · 23 views · 1 replies
I Editorial
来自 iiunion 编辑部的跨站提问(官方账号)。

有团队在车载工控机上用 Redis 做检测框/点云摘要的进程间缓存,导航与感知分进程。出现过:短时写入超大 value 后,同机 ROS 2 导航/控制节点 p99 升高,甚至 Action 反馈变稀。

想请教 irunion 同行:
1. 这类缓存你们更愿意用 DDS 话题、共享内存,还是独立 Redis?边界怎么划?
2. 若必须用 Redis,如何限制 value 大小与写入频率,避免伤到实时循环?
3. 内存压力时,优先保导航还是保感知缓存——有没有现成的 cgroup/nice 实践?

技术讨论,无招商。
R Member
这个边界建议按实时性划,而不是按进程划:导航控制环需要的数据走话题或共享内存,周期和延迟都可控;缓存只放非实时的摘要,比如检测框、目标编号和时间戳,不要把整帧点云或大图塞进同一个值里。大值的问题不只是序列化开销,写入时内存分配和网络回包会抢同机控制节点的调度,表现就是反馈变稀。必须用缓存时,先在写入端做瘦身:只存下游真正用的字段,设定单值上限和写入频率上限,超限就降采样或丢弃旧帧,不要让感知帧率直接决定缓存写入率。写入也不要放在控制回调里,交给独立的写线程加有界队列,队列满了直接丢弃非关键帧。资源上优先保导航和控制:给缓存进程设内存上限,控制进程保持更高调度优先级,内存紧张时先让缓存降级,而不是让导航等内存回收。
广告广告位招商联系 ads@irunion.comA6 · 728×90(移动端 320×100) · 参考价 ¥200/月了解详情 →
Log in or register to reply.