Improve perf of flows in highly-connected traces
- Dominant language
- C++
- Stars
- 6.5k
- Forks
- 868
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 218
Description
*Discussed in https://github.com/google/perfetto/discussions/3220*
TLDR: we should improve both rendering and query performance on traces with slices which are highly connected with flows (e.g. there is an indirect path from one slice to O(100k) slices).
It's unclear what the best way to proceed with this is:
1) We can have a "depth limit": it solves both the rendering and query problems *but* it can lead to very confusing situations on traces with deep but infrequent flows (e.g. if there is a chain of depth 10 but also is linear so it's only 10 slices long)
2) We can have a "slice limit": would solve both problems *but* again could have confusing semantics of flows becoming missing arbitrarily.
3) We can make the querying based on the currently active window: this solves both problems when zoomed in *but* it doesn't solve the rendering *nor* the query problem when zoomed out.
4) Maybe some combination of the above: unclear what that should look like that.
I think this is pretty low priority but maybe we should think about this when revamping how flows work.
Contributor guide
Research direction
Start with the discussion at https://github.com/google/perfetto/discussions/3220 and compare the proposed depth limit, slice limit, and active-window approaches. The work is done when an approach is agreed and both flow rendering and querying perform acceptably on highly connected traces without confusing missing-flow semantics.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100