google / google/perfetto

Implement source line (w/ heatmap) and disassembly viewing for callstack samples

Open
#7,312 4 comments 0 reactions 0 assignees View on GitHub
ui
Dominant language
C++
Stars
6.5k
Forks
868
Avg merge
2d 1h
Merged PRs (30d)
218

Description

Lots of other profilers have a few features which people really like and find cool and we should also have in Perfetto:
1) Support for viewing source files (specifically focused on functions which have been been callstack profiled inside the UI with heatmaps of lines profiled)
2) Support for viewing assembly profiled with a similar heatmap view to the above
3) In the assembly viewer, visualize using arrows the control flow (i.e. arrow for backwards/forwards jumps etc)

I already experimented building this in https://github.com/lalitMaganti/sismo. So concretely we need to do the following:
1) Add support at the proto level for embedding source file and/or assembly information in the trace.
2) Add support at bundling time to "bundle" the trace file with the source file and assembly information (i.e. include the contents in the trace)
3) Add support in the UI for visualizing this information in a new details panel with switchers to switch between the modes
4) Add support in the tree explorer tabs to open this details panel focusing in on a particular function.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the existing sismo experiment and mapping Perfetto’s proto, trace bundling, UI details-panel, and tree-explorer areas; the issue names no specific files or tests. Done means traces can embed and bundle source and assembly data, the UI can show both with heatmaps and assembly control-flow arrows, and tree explorer tabs can open the panel for a selected function.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
frontend, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.