Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rerun is extremely slow when updating a root pose #7604

Open
Danvil opened this issue Oct 7, 2024 · 4 comments
Open

Rerun is extremely slow when updating a root pose #7604

Danvil opened this issue Oct 7, 2024 · 4 comments
Assignees
Labels
🪳 bug Something isn't working 🚀 performance Optimization, memory use, etc

Comments

@Danvil
Copy link

Danvil commented Oct 7, 2024

Describe the bug
rerun app is very slow and "laggy" when updating a root transform frame at 100 Hz.

To Reproduce

  1. Use Rust 1.80, Linux and rerun 0.18.2
  2. Publish a pose at 100 Hz: rr.log("root", rerun::Transform3D::from_translation_mat3x3(...))?;
  3. Publish some other data attached to the pose at 10 Hz: rr.log("root/points", rerun::Points3D::new({...}))?;
  4. It takes about 130 ms to render a single frame on a fairly powerful desktop.

Expected behavior
100 Hz pose update should be blazingly fast.

Screenshots
Some examples from the profiler widget:
image

@Danvil Danvil added 👀 needs triage This issue needs to be triaged by the Rerun team 🪳 bug Something isn't working labels Oct 7, 2024
@emilk emilk added 🚀 performance Optimization, memory use, etc and removed 👀 needs triage This issue needs to be triaged by the Rerun team labels Oct 7, 2024
@emilk
Copy link
Member

emilk commented Oct 7, 2024

Thanks for reporting!

Do you have a sample .rrd for us to take a look at? Or a full sample code to reproduce?

How many entities are there?

Are you compiling with --release?

@Danvil
Copy link
Author

Danvil commented Oct 7, 2024

Are you compiling with --release?

All my programs are compiled with --release.
For rerun I use cargo install and have this:

$ rerun --version
rerun-cli 0.18.2 [rustc 1.80.0 (051478957 2024-07-21), LLVM 18.1.7] x86_64-unknown-linux-gnu

Do you have a sample .rrd for us to take a look at?

Please find a a RRD file here
Note also that it took about 5 minutes to ingest this file into rerun ..

@Danvil
Copy link
Author

Danvil commented Oct 17, 2024

@emilk Any thoughts on this? Happy to provide more information as necessary

@Wumpf
Copy link
Member

Wumpf commented Dec 13, 2024

I'm working a bit on transform performance right now and the rrd is indeed proving useful as a a case for slow transforms. That said it's by far not the only thing that is slow in that scene (and I plan to work on that as well! :)).

What is however a bit confusing to me is this bit

Note also that it took about 5 minutes to ingest this file into rerun ..

I'm running on an M1 Max (which tbf is a very powerful machine) but even though I'm getting nowhere near that slow ingestion time on either latest Rerun or 0.18.2 as described, the entire loading is way under a second.
I used the official python build, installed via pip install rerun-sdk==0.18.2.

@Danvil could you please share what exact build (or how you built it) of Rerun you used and on which machine you ran this?


For posterity - mostly to keep better track myself:

On M1 Max @ rerun 0.20.2 (!!, that's not the originally posted version) I get about 23ms cpu time both while playing & at stills. Profiler shows about 8ms of that being in the transform context, but there's a ton of profiling overhead.

On a WIP branch (f170086, as of writing that's tagged as 0.21-alpha.0; not known yet if it lands in 0.21!) I'm down to 14ms while playing & at stills so far. Profiler now with much less reduced overhead (but still significant in places) tells me that transform context is now 0.07ms

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🪳 bug Something isn't working 🚀 performance Optimization, memory use, etc
Projects
None yet
Development

No branches or pull requests

3 participants