Weāre excited to share some highlights from the Perfetto v52 release.
The Perfetto UI now features a dark mode with theme-aware colors!
Dark mode can be enabled via"settings" in the left-hand menu: switch the ā[Experimental] UI Themeā option to āDarkā.
Note: this feature is still undergoing polish so is marked as experimental. Please file bugs for any readability/accessibility issues you may encounter!
SDK users and developers converting external traces to Perfetto format now have fine-grained control over track display and merging behavior. The new sibling_merge_behavior and sibling_merge_key options in TrackDescriptor allow you to:
Force tracks with the same name to be displayed separately
Merge tracks with different names into a single UI track
Override the default name-based merging logic
Additionally, counter tracks can now share Y-axis ranges using the y_axis_share_key in CounterDescriptor, making it easier to compare related metrics with the same units.
Learn more about converting custom data to Perfetto format and more advanced conversion features.
Perfetto UI now supports two new features to improve developer productivity:
Startup commands to automatically configure the analysis environment when traces load
Macros to add commands built out of other UI commands to the Command Palette
Both features can be found in the UI settings page:
Learn more about UI startup commands and macros and configuring startup commands via URL parameters.
Perfetto now automatically creates structured track visualizations for Linux kernel ftrace events that follow established naming conventions. This feature enables kernel developers to instrument their code with ftrace tracepoints and see them as slices and counters in the Perfetto UI without modifying Perfetto's source code.
Learn more about creating kernel track events with ftrace.
Faster trace loading: Optimized data structures and MurmurHash implementation result in faster trace loading and query execution
New analysis tools: The slice_self_dur table provides self-duration calculations, while the regexp_extract function allows parsing data out of strings without complex use of INSTR/SUBSTR
Expanded format support: Added symbolization for kernel frames in Linux perf.data files and support for trace-cmd report output format
Better ANR debugging: The anr_type column in the android_anrs table provides more detailed ANR classification
Bitmap tracking: New android.bitmaps module offers timeseries information about bitmap usage
CPU performance insights: Enhanced CPU utilization functions with upid/utid parameters and improved frequency calculations
Bulk track management: Configure multiple tracks simultaneously, saving time when setting up complex analysis views
Improved plugin architecture: Better isolation and standardized command naming
Enhanced visualization: Better DataGrid implementation with improved aggregation performance
Track guidance: New help infrastructure and descriptive text support for better user onboarding
Optimized track merging: Faster performance when working with large numbers of track_event tracks
Enhanced recording UI: Improved recording page with dedicated Perfetto SDK section for configuring track_event data source categories and wildcards
Advanced ftrace features: Support for exclusive single-tenant features, tracing_cpumask, tracefs options, and TID-based filtering
GPU monitoring: New support for polling Adreno GPU frequency data
Fixed numerous crashes and performance issues throughout the UI
Improved WebUSB error messages for better debugging experience
Enhanced support for persisting state from traces loaded through postMessage
For complete details, see the changelog or view all changes on GitHub.
Download Perfetto v52.0 from our releases page, get started at docs.perfetto.dev, or try the UI directly at ui.perfetto.dev.