
Rerun 点云渲染优化三步排查把百万点卡顿压回可用帧率【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun本文针对 Rerun 中 LiDAR、三维重建等点云数据的实时可视化场景给出一套 Rerun 点云渲染优化 的排查顺序先定位卡点属于数据量、传输还是渲染再用点云降采样、点半径与内存上限三个手段处理每步都说明用什么指标确认生效。先诊断三步定位卡顿来源改参数之前先判断卡点在哪一环顺序不能乱看数据规模。确认单帧实际点数和.rrd文件体量。如果单帧超过 50 万点优先怀疑数据量问题直接进入场景 A开性能指标看曲线。设置Ctrl/Cmd,里勾选 Show performance metrics顶栏会出现帧率FPS、每帧 CPU 耗时ms和 Viewer 内存RAM。观察趋势内存平稳偏高说明数据量问题内存持续上涨说明存在泄漏或数据只增不减用延迟面板定责。开发者面板CtrlShiftM的 Latency 页把数据流拆成batch creationSDK 攒批、gRPC sink、encode and transmit编码与网络传输、receive and decode接收解码、ingest into viewerViewer 入库五步每步给出滚动平均耗时。判断规则直接给出encode and transmit或receive and decode占大头说明卡在传输方向是少发数据ingest into viewer占大头把它和隐藏全部视图后帧率是否回升对照能区分是 GPU 渲染压力还是 Viewer 入库本身慢详见 docs/content/howto/visualization/diagnose-performance.md。点太多降采样前先看分布症状单帧 50 万点以上帧率随点数线性下跌延迟面板显示ingest into viewer或receive and decode偏高。做法体素网格降采样——按空间体素可理解成把三维空间切成小立方格子每格只留一个点能保留空间结构。网格尺寸按场景选城市级 LiDAR 常用 0.1 米室内重建可收紧到 0.05 米。def downsample(points, cell0.1): kept set() for x, y, z in points: kept.add((int(x / cell), int(y / cell), int(z / cell))) return [(i * cell 0.05 * cell, j * cell 0.05 * cell, k * cell 0.05 * cell) for i, j, k in kept]验证是否生效对比降采样前后顶栏帧率和内存两条曲线点数从多少降到多少要能说出来同时确认远景点数没变。如果帧率没回升说明瓶颈不在数据量回到延迟面板重新定责别在降采样上继续加码。帧率上不去先查点半径再动手症状点数已降到可接受范围旋转视角或缩放时仍然掉帧帧率低但receive and decode正常。做法最常见的可改项是点的渲染半径。Points3D的radii是世界空间半径米相机拉近时每个点被放大成大片色块互相重叠overdraw指多个像素被反复绘制覆盖导致 GPU 负担陡增改成radius_in_pixels指定固定像素半径后无论缩放多少屏幕上的点都保持同样大小开销稳定rr.log(lidar, rr.Points3D(pos).with_radius_in_pixels(1.5))若改完仍卡用命令面板的 Capture profile trace… 录 5 帧生成.puffin文件用puffin_viewer打开看火焰图flame graph把耗时按调用栈画成条形图的工具哪个环节耗时最长一目了然[WAIT]标记表示线程在等别的线程真正的开销在别处。验证是否生效顶栏每帧 CPU 耗时下降且缩放/旋转场景下帧率波动收窄。内存越跑越高设上限让旧数据先走症状长时间播放后顶栏 RAM 数字持续上涨进程接近系统内存峰值。做法给 Viewer 设内存上限默认行为是使用不超过系统内存 75%超限后丢弃最旧的数据而不是把机器拖死上限可以用启动参数--memory-limit或 Python 端rr.spawn的memory_limit参数调整。设完上限后在开发者面板CtrlShiftM的 Memory flamegraph 页按录制recording和子系统看 RAM 分布确认是某条实体路径的点云在无限增长还是多个录制叠加所致详见 docs/content/howto/visualization/limit-ram.md。rr.spawn(memory_limit800 * 1024 * 1024) # 上限 800 MiB验证是否生效内存曲线在触顶后走平并回落而不是继续爬升被丢弃的是最旧时间点的数据当前查看的帧不受影响。新版本里帮你做了什么对照 crates/store/ 与文档中的变更0.24 起这几件事从手动处理变成默认具备传输环节不再需要自己攒批SDK 自带微批处理micro-batching把小块日志合并再发送gRPC 流默认 8ms 刷新文件与内存流默认 200msreceive and decode偏高时不必再手调 flush 阈值延迟分解表成为内置功能五步拆分直接给出各环节耗时占比定责不用自己打日志内存上限有默认值75%超限自动丢旧数据长录制不会直接把系统拖崩开发者面板的内存火焰图按录制拆分 RAM内存越跑越高可以从曲线变成具体到某条实体路径性能指标面板一键开启帧率、每帧耗时、内存常驻顶栏排查基线随手可取。行动清单开 Show performance metrics记录当前帧率与内存基线没有基线谈不上优化打开 Latency 页确认主因传输步骤占大头就压缩/少发ingest into viewer占大头就先减点做体素降采样确认帧率回升且远景点数不变点数变化从 X 降到 Y 写进记录把可变半径的radii换成radius_in_pixels缩放场景下复查帧率用--memory-limit或memory_limit设上限确认内存触顶后走平、丢的是最旧数据。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考