Perfetto v57.1 #6501
LalitMaganti
announced in
Announcements
Perfetto v57.1
#6501
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
We're excited to share Perfetto v57.1! This release introduces an installable AI skill that teaches coding agents how to use Perfetto, a long-awaited fix for overlapping events in JSON traces (notably from the PyTorch profiler), state tracks, a brand-new track type alongside slices and counters, end-to-end support for systemd journald logs, a rework of the query results grid, and new SDK capabilities like nested tracks and correlation ids.
🤖 An AI skill for Perfetto
Perfetto now ships an AI skill that teaches coding agents how to record, query, and analyze traces, including guided workflows for common investigations. It works with any Agent Skills-compatible agent (Claude Code, OpenAI Codex, Gemini CLI, OpenCode, and others) and bundles a working
trace_processorfor the agent to use:See the Using AI with Perfetto docs for agent-specific install paths and what the skill can do.
🧩 Overlapping events in JSON traces now work
Perfetto now imports overlapping
"ph": "X"(complete) events in JSON (Chrome Trace Event Format) traces instead of silently dropping them. This was a long-standing pain point (#4280) for tools which emit overlapping synchronous events, notably traces from the PyTorch profiler: the affected slices vanished from both the timeline and SQL, and some users were resorting to self-hosting old versions of the UI. Overlapping events are now ingested onto overflow tracks which the UI merges back into a single thread track, so everything is visible in the timeline and queryable in SQL.Note that overlapping
"X"events remain outside the Trace Event Format spec: the importer records stats naming the offending events (surfaced in the UI's import warnings) so you can flag them to your tracing tool's maintainers. If you maintain such a tool, prefer async ("b"/"e") events, which is how the format natively represents genuinely overlapping intervals.🚦 State tracks
Slices and counters have a new sibling: state tracks, a first-class way to record the state of a system or subsystem over time (e.g. "Buffering", "Playing", "Paused"). A state track always has exactly one current value; each event simply transitions it to a new state, and clearing it marks the track as idle.
You can emit states from all the SDKs:
The Android Java SDK gets the same capability. Trace Processor ingests state events into a new
stateSQL table, and the UI renders state tracks natively with a dedicated details panel.📜 systemd journald logs
Linux system logs can now be captured as part of a trace, end to end:
linux.systemd_journalddata source records journald entries while tracing, with filters for minimum syslog priority,SYSLOG_IDENTIFIERs, and systemd unit names.log_sourcecolumn (plus alinux_systemd_journald_logsview in the standard library).Big thanks to @staticfloat for contributing this feature!
🖥️ UI
The query results grid got a big upgrade: columns can be sorted, reordered, and hidden, the sidebar is collapsible, and SQL errors are now surfaced properly in the grid.
oom_score_adjin the overview./proc/<pid>/smapsdata.🧰 SDK
PerfettoTrack): build multi-level track hierarchies and control how sibling tracks are sorted and merged in the UI.PERFETTO_TE_CORRELATION_ID()/PERFETTO_TE_CORRELATION_ID_STR()in the C SDK andPerfettoTrackEventBuilder.setCorrelationId()in the Java SDK.TRACE_STATE/PERFETTO_TE_STATE()APIs for state tracks described above.🔬 Profiling
heapprofd'sprocess_cmdlinenow supports partial wildcard matching (e.g.system_*or/system/bin/*), with the same semantics as the perf profiling and Java heap dump data sources. Wildcards only match already-running processes, so configs using them must setno_startup = true.🧠 Trace Processor
trace_processorcan now load traces directly from URLs and ui.perfetto.dev permalinks:adreno_cmdbatch_retiredandadreno_cmdbatch_syncftrace events are now parsed into GPU timeline slices.perfettoPython package now defaults to atrace_processorbinary pinned to the package version instead of downloading the latest build at runtime, making analysis scripts reproducible. Opt back into the old behavior withTraceProcessorConfig.fetch_latest_trace_processor.⚙️ Tracing service & probes
--enable-relay-endpoint-on=<sock>flag enables it per-socket, while--enable-relay-endpointkeeps its existing semantics.psci_domain_idle_enter/psci_domain_idle_exitfor finer-grained CPU power-state insight thancpu_idlealone, plusdisp_dpu_line_underrunand panel settings events.system_io_provider_events.🛠️ v57.1 patch fixes
trace_processorwrapper. The wrapper now ships inside the skill directory itself, for every install method and agent.Happy Tracing!
A huge thanks to everyone, both inside and outside of Google, who contributed to making Perfetto v57 a success.♥️
New Contributors
For complete details, see the changelog or view all changes on GitHub.
Download Perfetto v57.1 from our releases page, get started at docs.perfetto.dev, or try the UI directly at ui.perfetto.dev.
Full Changelog: v56.1...v57.1
This discussion was created from the release Perfetto v57.1.
Beta Was this translation helpful? Give feedback.
All reactions