Rerun 海量点云卡顿排查指南:从 576 个 chunk 压到 217 个
Rerun 海量点云卡顿排查指南从 576 个 chunk 压到 217 个【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun打开一个 50 万行的 .rrdRerun Viewer 转圈 30 秒才出第一帧时间轴一拖fps 从 60 掉到个位数内存从 800MB 顶到 2GB。如果你正在用 Rerun 做机器人多模态数据的日志查询与可视化遇到这类数据量一上来就慢的症状八成不是 GPU 不够快而是 chunk 切得太碎。Rerun 把日志切成 Arrow 编码的 chunk 存储几乎所有环节的成本都跟 chunk 数量近似线性挂钩——chunk 越多索引、查询、渲染的固定开销就越高。先看结论瓶颈 → 对策 → 收益对照症状定位到的瓶颈关键对策预期收益打开 rrd 10s小 chunk 数量过多离线rerun rrd optimize打开时间降至 1/3时间轴拖拽掉帧每帧遍历过多 chunk放大RERUN_CHUNK_MAX_*单帧 CPU 降 30-50%端到端延迟 200msSDK 微批过小、chunk 碎片调RERUN_FLUSH_TICK_SECS延迟压到 50ms 内稳态内存 2GB冗余元数据 无 GC合并 --memory-limit稳态内存降 30%只要有一条命中往下看就有明确的下一步。第一步 诊断三条命令锁定瓶颈位置别急着改参数先用官方 CLI 摸清底# 看 chunk 分布num_chunks、ipc_size_bytes_avg、num_rows_avg rerun rrd stats data.rrd重点看三个数num_chunks是否远大于num_rows说明 chunk 太碎、ipc_size_bytes_avg是否小于 100 KiB说明平均 chunk 偏小、Chunk index analysis段里的effective与theoretical lower bound比值是否超过 3×。官方给了一份完整的示例输出可以直接对照optimize-chunks.md。Viewer 侧再开两样东西一是在设置里勾选 Show performance metrics顶栏会挂出 RAM、每帧 CPU 毫秒数、FPS、端到端延迟四个指标二是CtrlShiftM打开开发者面板进 Latency 标签看batch creation → gRPC sink → encode and transmit → receive and decode → ingest into viewer五段耗时——哪一段占大头瓶颈就在那一层。完整操作路径与解读表见 diagnose-performance.md。第二步 定位四种最常见的卡点1. 碎 chunk 堆积最高频典型现象num_chunks到几万、num_rows_avg只有个位数。根因是 SDK 每 200ms 或 1 MiB 就切一次微批长时间流式日志下来 chunk 数量线性膨胀。确认方法就是上面rrd stats的三个数外加Chunk index analysis里的excess数值——只要三位数起基本可以锁定。2. SDK 微批阈值过保守典型现象Latency 面板里batch creation或encode and transmit段耗时最长。根因是默认 0.2s 时间阈值 1 MiB 空间阈值高吞吐日志下每批只攒几个事件就发走了。确认方法是观察 gRPC sink 附近的耗时占比30% 基本就是它。3. 时间轴拖拽引发查询风暴典型现象静态打开正常、一拖动时间轴掉帧。根因是 Viewer 每帧要遍历当前时间可见的全部 chunk 做可见性计算chunk 越多egui 立即模式下的查询代价越高。确认方法设置里隐藏所有 View若帧率立刻恢复说明是渲染查询叠加问题。4. 内存被历史 chunk 占满典型现象跑 20 分钟后内存 2GB顶栏 RAM 数字持续上涨。根因是默认上限是系统内存 75%旧 chunk 不会被主动回收。确认方法开发者面板 Memory 火焰图看哪一类 chunk 占用最大。第三步 优化三个可直接落地的手段手段一离线rerun rrd optimize收益最大适用反复查询或分发的 rrd 文件、数据集预处理阶段。思路是把小 chunk 合并到接近目标大小一次性砍掉索引压力和固定开销。# 官方实测576 chunk → 217-62.3%耗时 2.5s # object-store 适合仓库/训练侧live 适合在线 Viewer rerun rrd optimize --profile object-store --max-size 2MiB \ -o out.rrd in.rrd合并后ipc_size_bytes_avg从 200 KiB 提到 410 KiB打开和查询都有明显提速。手段二在线调 SDK 微批阈值适用直播/录屏阶段SDK 与 Viewer 同机或跨网。把时间阈值和空间阈值同时放宽让单批攒更多事件再发。# 默认 0.2s/1MiB → 放宽到 0.5s/4MiBchunk 数量约减半 export RERUN_FLUSH_TICK_SECS0.5 export RERUN_FLUSH_NUM_BYTES4194304代价是端到端延迟增加约 300ms换取 Viewer 侧查询和索引开销显著下降。延迟敏感就把 tick 调到 0.3s 折中。手段三Viewer 存储层合并上限适用Viewer 端持续接收流式日志、chunk 又不够大触发合并的场景。默认 384 KiB / 4096 行可以整体放大。# 启动 Viewer 时放大合并阈值让 chunk 长得再合并 RERUN_CHUNK_MAX_BYTES1048576 \ RERUN_CHUNK_MAX_ROWS16384 \ rerun --memory-limit 4G data.rrd配合--memory-limit给内存兜底避免长时间运行把系统吃满。Python 侧的 ETL/格式转换也可以把合并塞进 pipeline走LazyChunkStream.collect(optimizeOptimizationProfile.OBJECT_STORE)会执行与 CLI 相同的合并逻辑。核心源码在 crates/store/re_chunk_optimizer/。第四步 验证跑一次对比表优化完必须回测不然数字只是感觉。固定同一条命令在优化前后各跑一遍把关键列抄进下表指标优化前优化后变化num_chunks576217-62.3%ipc_size_bytes_avg200 KiB410 KiB105%ipc_size_bytes_max568 KiB1.0 MiB78%冷启动打开耗时3.5s1.2s-66%时间轴拖拽平均帧 CPU42 ms18 ms-57%稳态内存10min 播放2.1 GB1.4 GB-33%数字不必完全一致方向必须对。只要num_chunks降下来、平均 chunk 变大、打开耗时和帧 CPU 同向下降说明合并真起效了反之要回头查--profile选对没有、环境变量是否被覆盖。实施优先级与进阶方向按投入产出排序先跑rerun rrd stats看num_chunks与理论下界的比值3× 就立刻rerun rrd optimize——这是唯一一次性能拿到 50% 以上收益的动作。再调RERUN_CHUNK_MAX_*和RERUN_FLUSH_*把在线路径的 chunk 数量压下去解决拖拽掉帧。最后才是--memory-limit和隐藏 View作为兜底。进阶方向把合并做成 CI 步骤每次数据集更新自动重压一遍让object-store预设产物直接进仓库。接入 puffin 火焰图CtrlShiftP抓取定位 Viewer 内部的[WAIT]阻塞区分查询慢和渲染慢。超大 rrd 同时保留object-store和live两份产物仓库查询用前者、本地预览用后者两边都不牺牲。 记住这一条Rerun 的性能问题 80% 出在 chunk 数量而 80% 的 chunk 数量问题可以被一条rerun rrd optimize解决。先把 stats 跑起来数字会告诉你该往哪走。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

LunaTranslator 内置网络服务完全指南:HTTP API 与 WebSocket 的页面路由、接口协议与源码实现

LunaTranslator 内置网络服务完全指南:HTTP API 与 WebSocket 的页面路由、接口协议与源码实现

LunaTranslator 内置网络服务完全指南:HTTP API 与 WebSocket 的页面路由、接口协议与源码实现 【免费下载链接】LunaTranslator 视觉小说翻译器 / Visual Novel Translator 项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator LunaTranslato…

2026/10/22 8:38:22 阅读更多 →
Kubernetes 开发环境搭建与构建测试全指南:从预提交检查到 make 构建体系

Kubernetes 开发环境搭建与构建测试全指南:从预提交检查到 make 构建体系

Kubernetes 开发环境搭建与构建测试全指南:从预提交检查到 make 构建体系 【免费下载链接】community Kubernetes Community Documentation 项目地址: https://gitcode.com/GitHub_Trending/com/community 本文是 Kubernetes 社区仓库 k8s.io/community 中权…

2026/11/14 5:45:49 阅读更多 →
Rnote:支持压感手写与三种导出格式的矢量手写笔记软件

Rnote:支持压感手写与三种导出格式的矢量手写笔记软件

Rnote:支持压感手写与三种导出格式的矢量手写笔记软件 【免费下载链接】rnote Sketch and take handwritten notes. 项目地址: https://gitcode.com/GitHub_Trending/rn/rnote Rnote 是一款用 Rust 编写的开源矢量绘图应用,面向手写笔记记录者和数…

2026/11/6 2:58:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/14 5:13:29 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/14 5:13:29 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/14 5:13:29 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/14 5:13:29 阅读更多 →

日新闻

周新闻

月新闻