Skip to content

Perfetto v52.0

Latest
Compare
Choose a tag to compare
@LalitMaganti LalitMaganti released this 16 Sep 15:41
· 244 commits to main since this release

We’re excited to share some highlights from the Perfetto v52 release.

🌙 Dark mode support

The Perfetto UI now features a dark mode with theme-aware colors!

image

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!

🎛️ Advanced TrackEvent control & visualization

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.

🤖 UI automation: macros & startup commands

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:

image

Learn more about UI startup commands and macros and configuring startup commands via URL parameters.

📊 Easily turn kernel trace points into slices and counters

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.

image

Learn more about creating kernel track events with ftrace.

⚡ Trace processor performance & new features

  • 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

📱 Enhanced Android analysis capabilities

  • 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

🎨 General UI improvements & performance

  • 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

📊 Recording & data source improvements

  • 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

🔧 Additional improvements

  • 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.