blob: 2a33ef503074bc2e3444dccb1ce47212f93ec510 [file] [log] [blame]
Ryan Savitskia7dccea2022-05-10 22:21:47 +01001Unreleased:
Primiano Tucci2ab19f62020-07-01 21:28:31 +01002 Tracing service and probes:
Daniele Di Proietto44a77fc2024-10-24 18:12:52 +00003 * Add `--clone-by-name` to the perfetto command line. This allows cloning a
4 tracing session by its unique_session_name.
Daniele Di Proiettoeae417b2024-10-11 12:23:03 +00005 SQL Standard library:
Lalit Maganti036895c2024-10-18 12:13:22 +01006 * Removed the `linux_device_track` table. Linux RPM (runtime power
7 management) tracks formerly in this table now can be found in the `track`
8 table with `classification` `linux_rpm`.
9 * Removed the `energy_counter_track` table. Android energy estimate
10 breakdown tracks formerly in this table now can be found in the `track`
11 table with `classification` `android_energy_estimation_breakdown`.
Lalit Magantid61e77b2024-10-21 05:05:36 -070012 * Removed the `energy_per_uid_counter_track` table. Android energy estimate
13 breakdown tracks formerly in this table now can be found in the `track`
14 table with `classification` `android_energy_estimation_breakdown_per_uid`.
15 * Moved the `gpu_work_period_track` table into the `android.gpu.work_period`
16 standard library module and renamed it to `android_gpu_work_period_track`.
Lalit Maganti145dc822024-10-21 05:18:56 -070017 * Removed the `irq_counter_track` table. Irq counter tracks formerly in this
18 table now can be found in the `track` table with `classification`
19 `irq_counter`.
20 * Removed the `softirq_counter_track` table. Softirq counter tracks formerly
21 in this table now can be found in the `track` table with `classification`
22 `softirq_counter`.
Lalit Maganti036895c2024-10-18 12:13:22 +010023 * Removed the `uid_counter_track` table. It was redundant as no data was
24 inserted directly into it.
Lalit Magantid61e77b2024-10-21 05:05:36 -070025 * Removed the `uid_track` table. It was redundant as no data was
26 inserted directly into it.
Anna Mayzner8d4918c2024-11-11 11:28:25 +000027 * Removed `common` package. It has been deprecated since `v42` and most
28 functionality has been moved into other packages. Notably, the time
29 conversion functions can be found in `time.conversion` module, and
30 `thread_slice` is available with `slices.with_context`.
Daniele Di Proiettoeae417b2024-10-11 12:23:03 +000031 Trace Processor:
32 *
33 UI:
34 *
35 SDK:
36 *
37
38
Daniele Di Proietto21f9bd92024-10-14 16:03:30 +000039v48.1 - 2024-10-14:
40 SDK:
41 * Fix build with MSVC.
42
43
Daniele Di Proiettoeae417b2024-10-11 12:23:03 +000044v48.0 - 2024-10-11:
45 Tracing service and probes:
Ryan Savitski63ce2512024-08-19 15:47:21 +010046 * Improved accuracy of ftrace event cropping when there are multiple
47 concurrent tracing sessions. See `previous_bundle_end_timestamp` in
48 ftrace_event_bundle.proto.
Lalit Magantid2eee5d2024-09-11 13:24:06 +010049 * Increased watchdog timeout to 180s from 30s to make watchdog crashes
50 much less likely when system is under heavy load.
Anna Mayznerb0feb772024-05-17 07:27:16 +000051 SQL Standard library:
Anna Mayzner103cc402024-10-07 15:19:20 +000052 * Improved CPU cycles calculation in `linux.cpu.utilization` modules:
53 `process`, `system` and `thread` by fixing a bug responsible for too high
54 CPU cycles values.
55 * Introduces functions responsible for calculating CPU cycles with
56 breakdown by CPU, thread, process and slice for a given interval.
Lalit Maganticf23a8e2024-10-08 10:28:09 +010057 * Added `linux.perf.samples` module for easy querying of perf samples
58 in traces.
59 * Added `stacks.cpu_profiling` module for easy querying of all CPU
60 profiling data in traces.
Daniele Di Proiettoa8530002024-08-07 11:19:49 +000061 Trace Processor:
Lalit Maganti0044e3c2024-10-09 14:27:37 +010062 * Added (partial) support for the Gecko (Firefox) JSON profiler format.
63 Parsing is optimized for CPU profiling collected with `perf` and converted
64 to the Gecko format. Only parsing of samples is supported; parsing of
65 markers and any other features (e.g. colours) is *not* supported.
66 * Added (partial) suppoort for the perf script text format from both perf
67 and simpleperf. Only parsing files with the default formating or with pids
68 included (i.e. `-F +pid`) is supported. Any other formatting options are
69 *not* supported.
Lalit Maganticf23a8e2024-10-08 10:28:09 +010070 * Added support for parsing non-streaming ART method tracing format.
71 * Added support for parsing GZIP files with multiple gzip streams.
72 * Added support for parsing V8 CPU profling samples from proto traces.
73u * Renamed Trace Processor's C++ method `RegisterSqlModule()` to
Anna Mayzner103cc402024-10-07 15:19:20 +000074 `RegisterSqlPackage()`, which better represents the module/package
75 relationship. Package is the top level grouping of modules, which are
76 objects being included with `INCLUDE PERFETTO MODULE`.
77 `RegisterSqlModule()` is still available and runs `RegisterSqlPackage()`.
78 `RegisterSqlModule()` will be deprecated in v50.0.
Daniele Di Proiettoa8530002024-08-07 11:19:49 +000079 UI:
Ryan Savitskib124a042024-09-30 13:19:02 +010080 * Scheduling wakeup information now reflects whether the wakeup came
81 from an interrupt context. The per-cpu scheduling tracks now show only
82 non-interrupt wakeups, while the per-thread thread state tracks either
83 link to an exact waker slice or state that the wakeup is from an
84 interrupt. Older traces that are recorded without interrupt context
85 information treat all wakeups as non-interrupt.
Steve Golton5849a822024-10-08 08:41:54 +010086 * Nest global/user async tracks according to their parent/child relationship
87 in the trace.
88 * Introduced new workspace API which allows nested tracks & multiple
89 workspace support.
90 * Introduced middle ellipsis in track titles when title text is longer than
91 the available space, while preserving the start and end of title text &
92 add popup of full title text on hover.
93 * Fixed spurious judder issue in popups with tall content.
94 * Fixed bug where marker durations were not rendered on selected markers.
95 * Removed ChromeScrollJank V1 track (V2 should be used from now on).
96 * Major internal changes (affecting pugin developers and core contributors):
97 * Removed legacy selection types, use track event selection types going
98 forward for all single event selections.
99 * Details panels are now attached to the track rather than registered
100 separately.
101 * Introduced `registerSqlSelectionResolver`, which allow plugins to add
102 handlers allowing other parts of the codebase to make selection on
103 tracks from other plugins based on a sql table name and id.
104 * Changed lifetime of track instances; they are now created on trace load
105 by plugins and survive the lifetime of the trace, rather than getting
106 created and destroyed as they appear/disappear on the timeline.
107 * Fix circular dependencies and turn future instances into errors.
Daniele Di Proiettoa8530002024-08-07 11:19:49 +0000108 SDK:
109 *
110
111
112v47.0 - 2024-08-07:
113 SQL Standard library:
Lalit Magantida1ccee2024-06-20 14:23:23 +0100114 * Removed `cpu.cpus` and `cpu.size` modules. The functions inside
115 for guessing core type were inaccurate and often misleading.
116 There is no replacement for these as there is no accurate data
117 source available.
Lalit Magantia1aa9942024-06-21 11:47:53 +0100118 * Moved `cpu.utilization` package to `linux.cpu.utilization`. The
119 functionality inside this package only works properly on Linux
120 and Linux derived OSes (e.g. Android).
Lalit Maganti7ae5c742024-06-21 11:48:22 +0100121 * Moved `cpu.freq` module to `linux.cpu.frequency` and renamed
122 `cpu_freq_counters` to `cpu_frequency_counters` for the same
123 reason as above.
Lalit Maganti154a7a62024-06-21 13:29:18 +0100124 * Moved `gpu.frequency` to `android.gpu.frequency` for the same reason as
125 above.
Lalit Magantic04191b2024-07-27 20:34:25 +0100126 * Moved `cpu.idle` module to `linux.cpu.idle` or `linux.cpu.idle_stats` for
127 the same reason as above.
128 * Moved content of `linux.cpu_idle` into `linux.cpu.idle` and
129 `linux.cpu.idle_stats` to make it consistent with above changes.
Lalit Maganti6715e762024-06-21 13:25:16 +0100130 * Moved `memory.android.gpu` to `android.memory.gpu` to make it consistent
131 with above changes.`
132 * Moved contents of `memory.linux.process` to `linux.memory.process` and
133 `android.memory.process` to make it consistent with above changes.
134 * Moved `memory.linux.high_watermark` to `linux.memory.high_watermark` to
135 make it consistent with above changes.
Lalit Maganti28092f82024-06-21 13:18:41 +0100136 * Moved `memory.heap_graph_dominator_tree` to
Lalit Maganti6715e762024-06-21 13:25:16 +0100137 `android.memory.heap_graph.dominator_tree`. This is to allow for the
Lalit Maganti28092f82024-06-21 13:18:41 +0100138 addition of more modules related to heap graphs.
Anna Mayznerd3e52272024-07-29 07:20:46 +0000139 * Added `linux_kernel_threads` table to `linux.threads` module.
Daniele Di Proietto7114ea52024-06-13 15:45:00 +0000140 Trace Processor:
Lalit Maganti1e101932024-07-26 15:17:06 +0100141 * Change `NotifyEndOfFile` method to return a Status object. For backwards
142 compatibility, this value can be ignored but in the future a [[nodiscard]]
143 annotation will be added.
Anna Mayzner9ee8c1e2024-06-24 16:44:51 +0000144 * Added `CREATE PERFETTO INDEX` to add sqlite-like indexes to Perfetto
145 tables. Has the same API as `CREATE INDEX`.
Daniele Di Proietto7114ea52024-06-13 15:45:00 +0000146 UI:
Steve Goltoncc2c9012024-08-06 13:08:15 +0100147 * Updated to Typescript 5.5.2, lib es2022, & upreved various packages.
148 * Made `Disposable`, `DisposableStack`, and their async variants available
149 to use in the UI.
150 * Vastly improved flamegraph.
151 * Added track filter which can be used to search for tracks by name.
152 * Added Wattson cpu power estimation plugin.
153 * Added option to show thread slice ancestor/descendant slices in thread
154 slice details panel context menu.
155 * Added feature where plugin can ask tracks to be automatically pinned when
156 adding tracks on trace load.
157 * Fixed inconsistent y-range for all CPU SS tracks.
158 * Switched to using explicit de/serialization when creating/loading
159 permalinks.
160 * Improved sched slice details query efficiency.
161 * Added `TagInput` widget.
162 * Added `ui/format-sources` script to run eslint and prettier in one go.
163 * Reduced number of circular imports.
164 * Added `SharedAsyncDisposable` for management of shared async resources.
165 * Fixed rendering of negative counter tracks.
166 * Improved data loss notification using a popup
167 * Tidied up `TrackDescriptor`.
168 * Added Android trace probes for ChromeOS
169 * Added feature to try reconnect when websocket connection is lost.
170 * Fixed bug in 1ns event rendering.
171 * Tidied up details panel font sizes and weights.
172 * Added segmented buttons widget.
173 * Added 'main thread' chip to main thread tracks.
174 * Added plugin API to add menu items to the sidebar.
175 * Added `onTraceReady` plugin hook.
176 * Various clean-ups and bugfixes.
Daniele Di Proietto7114ea52024-06-13 15:45:00 +0000177
178
179v46.0 - 2024-06-13:
180 SQL Standard library:
Anna Mayznerb0feb772024-05-17 07:27:16 +0000181 * Added megacycles support to CPU package. Added tables:
182 `cpu_cycles_per_process`, `cpu_cycles_per_thread` and
183 `cpu_cycles_per_cpu`.
Anna Mayzner8b1d50a2024-05-24 10:00:18 +0000184 * Improved `memory` package. Added `memory.linux.process`,
185 `memory.linux.high_watermark` and `memory.android.gpu` modules.
186 * Created `gpu` package with `gpu.frequency` module.
Anna Mayznerb0feb772024-05-17 07:27:16 +0000187 * Migrated `sched.utilization` package to `cpu.utilization`.
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000188 Trace Processor:
Anna Mayzner6b9b91e2024-05-15 12:01:33 +0000189 * Added "time to initial display" and "time to full display" metrics to
190 the Android startup metric.
Daniele Di Proietto15a193e2024-05-09 14:26:57 +0000191 UI:
Daniele Di Proietto7114ea52024-06-13 15:45:00 +0000192 * Added plugin for synchronizing two instances of the UI - search for
Steve Goltonaae0e232024-06-04 14:02:23 +0100193 'Enable timeline sync with other Perfetto UI tabs' in the command palette.
194 * Add builtin prompt functionality to the plugin API:
195 I.e. `await PluginContextTrace.prompt('...')`
196 * Fixed various bits of tech debt.
Daniele Di Proietto15a193e2024-05-09 14:26:57 +0000197 SDK:
Etienne Pierre-doray941d0d32024-05-21 12:37:23 +0000198 * The TRACE_COUNTER macro and CounterTrack constructor no longer accept
199 `const char *` track names. In case your code fails to compile,
200 https://perfetto.dev/docs/instrumentation/track-events#dynamic-event-names
201 explains how to fix the problem.
Daniele Di Proietto15a193e2024-05-09 14:26:57 +0000202
203
204v45.0 - 2024-05-09:
205 Trace Processor:
Anna Mayzner55860742024-05-08 13:37:42 +0000206 * Optimised single column `DISTINCT` queries.
207 * Optimised `LIMIT` and `OFFSET` queries.
Anna Mayznerf119e5a2024-05-01 10:47:32 +0000208 SQL Standard library:
209 * Improved support for querying startups on Android 9 (API level 28) and
210 below. Available in `android.startup.startups` module.
211 * Added tables for querying "Time To Initial Display" and "Time To Full
212 Display" metrics for app startups. Available in new module
213 `android.startup.time_to_display`.
214 * Added table for querying hardware power rail counters in new
215 `android.power_rails` module.
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000216 UI:
Steve Golton6aaa8a12024-04-30 10:16:40 +0100217 * Add tracks to the list of searchable items.
218 * Use mipmaps to improve track query performance on large traces.
219 * Fix slow scrolling bug in ftrace explorer tab on low DPI machines.
220 * Overhaul track decider queries to improve trace load times.
221 * Add track
222 * Tidy up command names & remove some example ones.
223 * Remove arg auto-completion in pivot table.
224 * Show dominator tree views by default.
225 * Fix counter event selection off-by-one error.
226 * Add viewport control to the plugin API.
227 * Sticky track titles to improve track button accessibility in tall tracks.
228 * A handful of small bugfixes.
Daniele Di Proietto54aec282024-04-08 14:24:17 +0000229 SDK:
Daniele Di Proiettobcb9d222024-03-21 18:52:56 +0000230 * The TRACE_EVENT macro used to reject `const char *` event names: either
231 `StaticString` or `DynamicString` needed to be specified. In the last year
232 (since https://r.android.com/2494614), TRACE_EVENT mistakenly accepted
233 `const char *` as an event name. This has been fixed now. In case your
234 code fails to compile,
235 https://perfetto.dev/docs/instrumentation/track-events#dynamic-event-names
236 explains how to fix the problem.
Daniele Di Proietto54aec282024-04-08 14:24:17 +0000237
238
239v44.0 - 2024-04-10:
240 Trace Processor:
241 * New modules added to standard library: `frames.timeline`,
242 `frame.per_frame_metrics`, `sched.time_in_state`.
243 UI:
Primiano Tucci272ffb02024-03-12 20:03:10 +0000244 * Per-cpu scheduling tracks now distinguish real-time priority threads with
245 a hatched pattern and name prefix. Based on priority during switch-in.
Ryan Savitski44c7cc22024-03-19 02:38:41 +0000246 * Added ftrace event cropping for traces recorded by perfetto v44+.
247 Events are ignored if they precede the earliest timestamp covered by all
248 per-cpu data streams. This should significantly improve the presentation
249 of RING_BUFFER traces, removing artifacts such as never-ending slices
250 starting at the beginning of the trace.
Daniele Di Proietto54aec282024-04-08 14:24:17 +0000251 * Significantly improved trace load times.
252 * Improved counter track view modes, including log scale, expanded view, and
253 the ability for plugin authors to link scales of several counter tracks
254 together.
255 * Add dominated size and objects to Java heap graph view.
256 Added hotkey Q to open and close bottom drawer.
257 * Fixed bug where timeline header and tracks could become horizontally
258 misaligned when using browser zoom.
259 * Fixed crash when hot-reloading Sass during development.
260 * Fixed bug where crashed debug tracks could not be closed.
261 * Fixed missing flame graph details for area selections.
262 * Consistent reporting of durations for incomplete slices.
263 * Switch to using prettier for formatting TS & Sass instead of ESLint.
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000264 SDK:
Daniele Di Proiettob81ac522024-03-19 14:44:52 +0000265 * "track_event" categories are disabled by default in the C API, if they
266 don't match anything in the data source config. This behavior differs from
267 the C++ API. Configs should include either `enabled_categories: "*"` or
268 `disable_categories: "*"` to explicitly specify the desired behavior that
269 work both for C and C++.
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000270
271
Daniele Di Proiettof9543642024-03-07 17:18:41 +0000272v43.2 - 2024-03-07:
273 UI:
274 * Added redirection to pinned UI version when using
275 `trace_processor_shell --httpd` and pinned version is available.
276
277
Daniele Di Proietto78cf90e2024-03-05 17:03:03 +0000278v43.1 - 2024-03-05:
279 Tracing service and probes:
280 * Cherry-pick of https://r.android.com/2988674, which fixes the android x86
281 standalone build.
282
283
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000284v43.0 - 2024-03-05:
285 Tracing service and probes:
286 * Buffers marked as `transfer_on_clone` will be flushed independently when
287 cloning.
288 * ftrace: added drain_buffer_percent option to read kernel ring buffer
289 based on occupancy in addition to existing periodic reads. Requires Linux
290 kernel v6.1+.
291 * ftrace: changed default kernel per-cpu ring buffer sizes if a config
292 doesn't request an explicit size via buffer_size_kb. Added
293 buffer_size_lower_bound option that lets the service choose a bigger ring
294 buffer size than requested.
Ryan Savitski39108cf2024-03-04 13:40:56 +0000295 * "linux.process_stats" data source: added options to record: process age,
296 time spent running in userspace, and time spent running in kernel mode,
297 using /proc/pid/stat. See "record_process_age" and
298 "record_process_runtime" options.
Daniele Di Proietto81bf7ab2024-02-01 13:32:57 +0000299 Trace Processor:
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000300 * Added `decompress_packets` mode to the traceconv tool.
Daniele Di Proietto956b18d2024-02-26 17:24:00 +0000301 * Support memory mapped file access on Windows.
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000302 * Deprecated `common` standard library module, it will be removed by v45.
303 Some of the functionality have been migrated to other parts of standard
304 library.
Daniele Di Proietto81bf7ab2024-02-01 13:32:57 +0000305 UI:
Daniele Di Proietto173d60b2024-02-21 15:29:19 +0000306 * Added a "defaultPlugins" list to allow control over which plugins are
307 enabled by default.
308 * Added a feature to allow enabling/disabling plugins permanently from the
309 plugins page.
310 * Added plugin load times to the plugin page.
311 * Added scrolling to the pinned track area.
312 * Added commands for expanding and closing all tracks.
313 * Added {expand,collapse}GroupsByPredicate to plugin API.
314 * Added SimpleSliceTrack & SimpleCounterTrack which have the same
315 functionality of debug tracks but may be added on trace load from within
316 plugins.
317 * Added naive track crash containment, which means tracks that crash should
318 not crash the entire UI.
319 * Don't render "idle" kernel thread slices in thread state tracks.
320 * Fixed crash when using autofill in text inputs in chrome.
321 * Fixed bug where "incomplete" slices were sometimes not rendered.
322 * Fixed crash when calls to CacheStorage fail via promise rejection.
323 * Fixed bug causing slices to occasionally disappear in tracks v2.
324 * Fixes crash in tracksV2 when visible window is negative.
325 * Fix bug when toggling the sidebar without a trace loaded would either
326 crash the UI or simply not work.
327 * Various TabsV2 QoL improvements.
328 * Various AndroidLongBatteryTracing plugin improvements.
Daniele Di Proietto81bf7ab2024-02-01 13:32:57 +0000329
330
331v42.0 - 2024-02-02:
332 Tracing service and probes:
Ryan Savitski983f90b2024-01-16 16:10:59 +0000333 * Linux/Android: kernel scheduling data (sched_switch and sched_waking
334 ftrace events) is now serialised in a more compact format by default
335 (previously required setting ftrace_config.compact_sched.enabled).
Daniele Di Proietto5b5ae0b2023-11-15 16:16:28 +0000336 UI:
Primiano Tucci77c4ccd2024-01-16 16:33:14 +0000337 * Added "Realtime (Trace TZ)" timestamp formatting option to see timestamps
338 in the local time of the traced device. It requires recent versions of the
339 tracing service which set the system_info.timezone_off_mins field.
Daniele Di Proietto81bf7ab2024-02-01 13:32:57 +0000340 * Added tab support to the plugin API.
341 * Added a plugin to improve visualization of Android power traces containing
342 ODPM (on-device power rail monitor) data.
343 * Added support to attach the UI via ?rpc_port=1234 to multiple instances of
344 trace_processor --httpd --http-port=1234 (see UI docs).
345 * Fixed OOM detection message on in-memory tables.
346 * Fixed rendering of events at the every beginning and end of the trace.
347 * Fixed rendering of low density slices.
348 * Fixed bug in filterVisibleSlices (Thanks to Liangliang Sui).
Daniele Di Proietto5b5ae0b2023-11-15 16:16:28 +0000349 SDK:
Daniele Di Proietto81bf7ab2024-02-01 13:32:57 +0000350 * Fixed a bug that would cause DataSource::OnStop to be called twice upon
351 service disconnection with HandleStopAsynchronously().
352 * Fixed a long standing bug that caused the last TracePacket for every
353 sequence to be lost during scraping, for data sources that do not support
354 flushing. The fix works with old versions of the tracing service.
Lalit Magantie7b5ffb2024-01-02 17:10:27 +0000355
356
Daniele Di Proietto81bf7ab2024-02-01 13:32:57 +0000357v41.0 - 2024-01-11:
Lalit Magantie7b5ffb2024-01-02 17:10:27 +0000358 Tracing service and probes:
359 * Added support for ADB_SERVER_SOCKET in the websocket bridge.
360 * Added support for reading Pressure Stall Information (PSI) from the kernel.
361 Trace Processor:
362 * Added capability to control trace processor using stdin/stdout when using
363 shell binary. This acts as a simpler alternative to the existing HTTP
364 control API.
365 * Fixed multiple edge-case issues in RestoreInitialTables.
366 SDK:
Daniele Di Proietto01080e92023-12-01 18:59:14 +0000367 * Fixed a long standing bug that caused the last TrackEvent event for each
368 thread to be lost during scraping. The fix works with old versions of the
369 tracing service.
Daniele Di Proietto5b5ae0b2023-11-15 16:16:28 +0000370
371
Lalit Maganti7514a692023-12-05 12:01:02 +0000372v40.0 - 2023-12-04:
373 Tracing service and probes:
374 * Added support for collecting battery voltage from the Android Power HAL.
375 * Added support for emitting machine id from producers on remote hosts.
376 Trace Processor:
377 * Added of flow id from trace as a column in the flow table.
378 * Fixed computation of trace_bounds table when using UI native acceleration.
379 UI:
380 * Switched to use "v2" querying and rendering system for tracks by default.
381
382
Daniele Di Proietto5b5ae0b2023-11-15 16:16:28 +0000383v39.0 - 2023-11-15:
384 Tracing service and probes:
Primiano Tuccife6137c2023-10-17 12:06:34 +0100385 * Added reporting of TZ offset under system_info.timezone_off_mins .
Primiano Tucci89eb3242023-10-31 16:13:04 +0000386 * Added no_flush option to DataSourceDescriptor to avoid unnecessary IPC
387 roundtrips to flush data sources like track_event that rely uniquely on
388 server-side scraping.
Primiano Tucci0b3de742023-11-09 22:55:33 +0000389 * Added support for running on Linux & Android systems configured with 16K
390 pagetables.
Daniele Di Proietto2789b5b2023-04-14 09:53:03 +0000391 Trace Processor:
Lalit Maganti7514a692023-12-05 12:01:02 +0000392 * Added android_boot metric.
Daniele Di Proietto5b5ae0b2023-11-15 16:16:28 +0000393 * Added new PerfettoSQL syntax (CREATE PERFETTO VIEW) for adding schemas to views.
Lalit Maganti7514a692023-12-05 12:01:02 +0000394 * Added support for the perf.data import format.
395 * Added dvfs and cpu_idle to stdlib.
Hector Dearman73bb5e22023-05-02 16:38:29 +0100396 UI:
Lalit Maganti7514a692023-12-05 12:01:02 +0000397 * Added a new type of debug tracks: counter.
Daniele Di Proietto5b5ae0b2023-11-15 16:16:28 +0000398 * Improved visualization of timestamps for durations.
Hector Dearman73bb5e22023-05-02 16:38:29 +0100399
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100400
Lalit Magantib6177832023-10-09 18:43:03 +0100401v38.0 - 2023-10-10:
402 Tracing service and probes:
403 * Added capability to transfer and clear buffers on CLONE_SNAPSHOT.
404 * Added new service for relaying IPC messages from local producers to a
405 remote tracing instance.
406 Trace Processor:
407 * Added new PerfettoSQL syntax (INCLUDE PERFETTO MODULE) for including
408 tables/views/functions defined in SQL modules.
409 * Added new PerfettoSQL syntax (CREATE PERFETTO TABLE) for defining analytic
410 tables in SQL.
411 * Added new PerfettoSQL syntax (CREATE PERFETTO MACRO) for defining macros
412 in SQL.
413 * Added TO_REALTIME function to convert timestamps to the realtime clock.
414 * Added support for parsing binder_command and binder_return events.
415 UI:
416 * Added support for zooming when using deep-links.
417 * Added track for displaying screenshots in traces.
418 * Added support for displaying UTC timestamps.
419 * Added capability to list, search and debug plugin tracks.
420 * Added plugins with commands for pinning tracks for latency and large
421 screen debugging in Android.
422
423
Daniele Di Proiettod2482cf2023-08-10 13:55:01 +0000424v37.0 - 2023-08-10:
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100425 Tracing service and probes:
426 * Fixed a bug which would cause sessions cloned with CLONE_SNAPSHOT to not
427 inherit the trace filtering config.
428 * Fixed a bug that would cause flushes to be acked prematurely in
429 traced_probes if the android.package_list data source is present.
Daniele Di Proiettod2482cf2023-08-10 13:55:01 +0000430 SDK:
431 * Fix build with MSVC.
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100432 UI:
433 * Added command palette (CTRL/Meta+Shift+P).
434 * Added grouping of global tracks into groups to reduce visual pollution.
435 * Added ability to toggle timestamps between trace / boot / wall time.
436 * Added recording UI for callstack sampler.
437 * Added "Viz" page to run chart query results with Vega-Lite.
438 * Highlight debuggable apps, which might have worse performance
439 characteristics, with a chip on the corresponding tracks.
440 Misc:
441 * master -> main branch migration. HEAD is now main, master is for now a
442 mirror and will become a stale frozen snapshot.
443
Daniele Di Proiettod2482cf2023-08-10 13:55:01 +0000444
Harkiran Bolaria8c8b0a82023-07-06 14:26:13 +0000445v36.1 - 2023-07-06:
446 Trace Processor:
447 * Fix compile on Windows.
448
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100449
Lalit Maganti72dc31f2023-07-05 17:19:42 +0100450v36.0 - 2023-07-05:
451 Tracing service and probes:
452 * Fixed unnecessary reads of thread files /proc when scraping process names.
453 Trace Processor:
454 * Rewrote filtering engine to be significantly faster on a wide range of
455 common queries.
456 * Significantly improved quality of PerfettoSQL error messages.
457 * Added API to retrieve last executed statement from iterator.
458 * Added support for filtering rows by a regex.
459 UI:
460 * Fixed flow events working for async tracks.
461 * Added table viewer for slice-like tables.
462 SDK:
463 * Reduce binary size impact of macro and template expansions.
464
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100465
Hector Dearmana0413512023-06-07 21:22:26 +0100466v35.0 - 2023-06-07:
467 Tracing service and probes:
468 * Compression has been moved from perfetto_cmd to traced. Now compression is
469 supported even with write_into_file. The `compress_from_cli` config option
470 can be used to restore the old behavior.
471 * Changed the android.statsd datasource to batch multiple atoms into
472 a single trace packet. This improves performance and information
473 density.
474 Trace Processor:
475 * Fixed protozero parsing code to support field ids larger than
476 2^16 - 1. protozero now supports field ids up to 1,000,000
477 See https://github.com/google/perfetto/issues/510.
478 UI:
479 * Add support for deep links into the UI via query parameters.
480 * Fixed multiple issues around the display of track event log
481 messages See https://github.com/google/perfetto/issues/507.
482
483
Hector Dearman73bb5e22023-05-02 16:38:29 +0100484v34.0 - 2023-05-02:
485 Tracing service and probes:
Daniele Di Proietto89111ad2023-03-14 11:57:01 +0000486 * --continuous-dump in tools/java_heap_dump now keeps recording until it
487 receives CTRL+C.
Primiano Tucci8146d0b2023-05-02 21:56:49 +0100488 * Add CLONE_SNAPSHOT triggers for non-destructive snapshots of the trace
489 buffer without tracing interruption.
Daniele Di Proiettoc24118a2023-02-01 13:49:41 +0000490 UI:
Hector Dearman73bb5e22023-05-02 16:38:29 +0100491 * Add support for parsing large integers from Trace Processor into
492 bigint. This is the default behaviour for unknown fields and can
493 be enabled specifically via the LONG and LONG_NULL column types.
Daniele Di Proiettoc24118a2023-02-01 13:49:41 +0000494 SDK:
Hector Dearman2f174a52023-03-21 15:21:54 +0000495 * Changed the type of the static constexpr metadata on protozero
496 generated bindings from a function returning the metadata to
497 metadata itself. For a field 'foo' the variable kFoo previously
498 defined as:
499 `static constexpr FieldMetadata_Foo kFoo() = { return {}; };`
500 it is now defined as:
501 `static constexpr FieldMetadata_Foo kFoo;`
502 This is a breaking change for users who directly access field
503 metadata.
Daniele Di Proietto93a232a2023-04-17 10:03:08 +0000504 * The new DataSourceBase::OnFlush() method allows users to properly handle
505 Flush requests.
Lalit Maganti51eba122023-03-02 13:52:08 +0000506
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100507
Hector Dearman320af652023-05-02 17:20:52 +0100508v33.1 - 2023-03-03:
509 Identical to v33.0. Version was bumped to work around prebuilt infra failures.
510
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100511
Lalit Maganti51eba122023-03-02 13:52:08 +0000512v33.0 - 2023-03-02:
513 All:
514 * Switched to a C++17-only project by removing C++11 opt-out. This completes
515 the migration started in v31.0.
516 SDK:
Daniele Di Proietto73c07ed2023-02-17 15:04:31 +0000517 * Tracing::Initialize() can be called more than once to initialize different
518 backends separately.
Lalit Maganti51eba122023-03-02 13:52:08 +0000519 * Reduce binary size impact of autogenerated code.
Daniele Di Proiettoc24118a2023-02-01 13:49:41 +0000520
Primiano Tucci5b044cc2023-08-10 18:33:14 +0100521
Daniele Di Proietto722ff232023-02-13 17:04:42 +0000522v32.2 - 2023-02-16:
523 SDK:
524 * Fix MSVC warnings.
525
526
Daniele Di Proietto5df28fc2023-02-01 15:42:18 +0000527v32.1 - 2023-02-01:
528 Trace Processor:
529 * Fix build on windows.
530
531
Daniele Di Proietto9eccbc42023-02-01 13:55:40 +0000532v32.0 - 2023-02-01:
Daniele Di Proiettoc24118a2023-02-01 13:49:41 +0000533 Tracing service and probes:
Primiano Tucci7c327c22022-11-23 12:24:49 +0000534 * Added an explicit TraceUuid packet. The tracing service now always
535 generates a UUID, even if TraceConfig.trace_uuid_msb/lsb is empty.
Primiano Tucci0a357422022-08-02 16:19:23 +0100536 Trace Processor:
Lalit Maganti966175c2022-10-05 18:20:52 +0100537 *
Primiano Tucci0a357422022-08-02 16:19:23 +0100538 UI:
539 *
540 SDK:
Daniele Di Proietto55fd4db2022-11-15 13:44:14 +0000541 * Add perfetto::Tracing::ActivateTriggers() function.
Sami Kyöstilä6020a922023-01-17 16:18:33 +1100542 * Made it possible to declare track event categories in a C++ namespace
543 with PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE, allowing multiple category
544 sets to be used in one same translation unit. Correspondingly, the
545 PERFETTO_COMPONENT_EXPORT and PERFETTO_TRACK_EVENT_NAMESPACE macros have
546 been deprecated in favor of this new functionality.
547 * Deprecated the PERFETTO_COMPONENT_EXPORT macro in favor of
548 PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS.
Daniele Di Proietto04073f62022-12-14 13:20:10 +0000549 * Added TracingInitArgs::enable_system_consumer configuration option, that
550 allows the linker to discard the consumer IPC, if not required.
Lalit Maganti9a32c282022-09-01 14:25:34 +0100551
Lalit Maganti02076452022-10-05 18:24:06 +0100552
Lalit Maganti2ed57ec2022-11-09 21:10:38 +0000553v31.0 - 2022-11-10:
554 Tracing service and probes:
555 * Added support for collecting Android Trusty ftrace events.
556 * Fixed resetting syscall filter when recording selected syscalls.
557 Trace Processor:
558 * Improved error messages on SQL syntax errors.
559 * Improved performance of queries containing GLOB. Handling of GLOB
560 constraints now happens inside trace processor instead of SQLite.
561 * Added support for parsing Android Trusty ftrace events.
562 UI:
563 * Added support for metatracing UI code and integrate with trace processor
564 metatracing.
565 * Added support for scrolling to a time region using the postMessage API.
566 * Enabled Pivot table functionality by default.
567 * Fixed downloading of Java heap profiles.
568 SDK:
569 * Switched to require C++17 by default. A time-limited opt-out exists but
570 is planned to be removed in v34. Please contact us at
571 perfetto-dev@googlegroups.com if you have thoughts or concerns on this
572 move.
573
574
Lalit Maganti966175c2022-10-05 18:20:52 +0100575v30.0 - 2022-10-06:
576 Trace Processor:
577 * Fixed parsing of "R+" (preempted) and "I" (idle kernel thread) end states
578 of sched_switch events, collected on Linux kernels v4.14 and above.
579 Previously, preemption was not recognised, and idle was reported as
580 "x" (task dead). See commit c60a630cfe0.
581 * Add support for parsing sys_write syscalls.
582 * Remove the thread_slice table: all columns have moved to the slice table
583 and thread_slice exists as a view for backwards compatibility. This view
584 will also be removed in the future
585 * Add Base64 encode SQL function.
586 * Add support for importing function graph ftrace events.
587 * Add support for importing V4L2 ftrace events.
588 * Add support for importing virtio-video ftrace events.
589 UI:
590 * Fix downloading profiles from flamegraphs.
591 * Enable Pivot table support by default.
592 SDK:
Lalit Maganti02076452022-10-05 18:24:06 +0100593 * Add support for disallowing concurrent tracing sessions.
594
Lalit Maganti966175c2022-10-05 18:20:52 +0100595
Lalit Magantief0f60b2022-09-06 18:32:29 +0100596v29.0 - 2022-09-06:
Lalit Maganti9a32c282022-09-01 14:25:34 +0100597 Tracing service and probes:
598 * Add support for only tracing selected syscalls. By selecting only syscalls
599 of interest, usage of the trace buffer and performance impact on device
600 is reduced.
Lalit Magantief0f60b2022-09-06 18:32:29 +0100601 * Add support for parsing DSI ftrace events.
Lalit Maganti9a32c282022-09-01 14:25:34 +0100602 Trace Processor:
603 * Make calling NotifyEndOfFile more than once an error: this was deprecated
604 in v28. Flush should be used instead for all by the final call.
605 * Add parsing and ingestion for V4L2 events.
Lalit Magantief0f60b2022-09-06 18:32:29 +0100606 * Upgraded SQLite to 3.39.2.
Lalit Maganti9a32c282022-09-01 14:25:34 +0100607 UI:
608 * Add support for searching Android log events.
609 * Group kernel wakelock tracks into a single track group.
610 SDK:
Mohit Saini4c8dedf2022-08-02 18:16:28 +0100611 * Added support for startup tracing. Tracing can be started in an app
612 before it connects to the tracing service.
613 The data sources which are started for startup tracing, will
614 be automatically adopted to normal tracing session once we start
615 normal tracing session.
Lalit Maganti9a32c282022-09-01 14:25:34 +0100616 * Added the |first_packet_on_sequence| boolean which is set the first packet
617 emitted on each TraceWriter.
Primiano Tucci0a357422022-08-02 16:19:23 +0100618
619
620v28.0 - 2022-08-02:
621 Tracing service and probes:
Hector Dearman09db5b02022-07-11 13:35:23 +0100622 * Add android.statsd datasource.
Primiano Tucci4681b9e2022-07-21 15:05:37 +0100623 * Removed log spam about sys.trace.traced_started in standalone builds.
Primiano Tuccibf7d4902022-07-25 21:39:38 +0100624 * Changed kallsyms parsing in traced_probes (ftrace) to be always
625 synchronous (when starting the trace, rather than on the first batch).
626 * Added ksyms_mem_policy = KSYMS_RETAIN_FOREVER config to avoid destroying
627 and re-parsing kallsysm repeatedly in benchmark runs.
Daniele Di Proiettofe9023f2022-07-19 15:33:28 +0100628 * Improve heap profiling shutdown: now the shared memory buffer where
629 alloc/free records are stored is properly flushed when stopping the data
630 source.
Primiano Tucci0a357422022-08-02 16:19:23 +0100631 * Fixed race condition in the daemonization path of perfetto --background.
632 It would cause daemonization failures if the TTY is destroyed immediately.
Primiano Tucci37a30c72022-06-13 14:37:50 +0100633 Trace Processor:
Anna Mayznerc7548882022-07-20 08:42:26 +0000634 * Deprecate calling NotifyEndOfFile more than once: Flush should instead be
635 used for all but the final call.
Primiano Tucci0a357422022-08-02 16:19:23 +0100636 * Added ingestion and visualization of I2C transactions.
Primiano Tucci37a30c72022-06-13 14:37:50 +0100637 UI:
Primiano Tucci2ed5d3d2022-08-02 16:33:20 +0100638 * Changed callstack sampling selection: selecting one sample now only shows
639 one stacktrace, selecting multiple samples shows the aggregation.
Primiano Tucci37a30c72022-06-13 14:37:50 +0100640 SDK:
Primiano Tucci94e94bb2022-07-26 20:19:30 +0100641 * Fixed a bug (b/239725760) that would cause abstract sockets using the
642 "@name" syntax in PERFETTO_CONSUMER_SOCK_NAME/PERFETTO_PRODUCER_SOCK_NAME
643 to have a trailing \0 in the socket name. This breaks interoperability
644 with adb forwarding. This is a tracing protocol breaking change. Nobody
645 seems to be relying on @abstract syntax across different versions of
646 client vs service.
Alexander Timin762b30b2022-08-01 16:40:56 +0000647 * Changed the mangling scheme for protozero enums nested in another message:
648 instead of OuterClass_Enum_VALUE, the enum values will be just named
649 VALUE with the enum itself wrapped in a perfetto_pbzero_enum_OuterClass
650 namespace to prevent naming collisions. This will allow the users
651 to alias the enum directly and use throughout their code.
652 The exact name mangling scheme is a carry-over from libprotobuf and
653 an internal implementation detail, so nobody should be relying on that.
Primiano Tucci0a357422022-08-02 16:19:23 +0100654 * Added protozero::EnumToString() to convert enum keys to string literals.
655
Primiano Tucci37a30c72022-06-13 14:37:50 +0100656
Lalit Magantibed4b812022-07-14 13:48:41 +0100657v27.1 - 2022-07-11:
658 SDK:
659 * Added an API for shutting down Perfetto.
660
661
Lalit Maganti3b522bc2022-07-01 15:16:23 +0100662v27.0 - 2022-07-01:
663 Tracing service and probes:
664 * Fix rare crash due to watchdog timeout being too short.
665 Trace Processor:
666 * Removed enable_perfetto_x64_cpu_opt by default for x64 MacOS
667 since it caused issues for CIs.
668 * Improved performance of filtering and sorting on most queries.
669 UI:
670 * Changed sorting of process groups to take slice count and presence of
671 perf profiles into account.
672 SDK:
Anna Mayznerf119e5a2024-05-01 10:47:32 +0000673 *
Lalit Maganti3b522bc2022-07-01 15:16:23 +0100674
675
Lalit Maganticf781522022-06-13 17:13:25 +0100676v26.1 - 2022-06-13:
677 Trace Processor:
678 * Fixed build failures on Windows.
679
680
Primiano Tucci37a30c72022-06-13 14:37:50 +0100681v26.0 - 2022-06-13:
682 Tracing service and probes:
Ryan Savitskia7dccea2022-05-10 22:21:47 +0100683 * Added wildcard (*) support when targeting processes by their command line
684 in the Android perf profiler ("linux.perf" data source) and Java heap
685 snapshots ("android.java_hprof").
686 * Added support for kernel thread sampling, and kernel-only callstacks in
687 the Android perf profiler.
Primiano Tucci37a30c72022-06-13 14:37:50 +0100688 * Fixed rare crash when parsing zero-length ftrace __data_loc strings.
689 * Fixed rare crash on 4.19 kernel when encountering unexpected zero-padded
690 ftrace pages.
691 * Removed capturing of thread_time_in_state (per-UID, per-OOM-adj time).
692 The data was unused and subsumed by correlating sched data with power
693 rail monitors.
Primiano Tucci1c889432022-04-01 18:14:29 +0100694 Trace Processor:
Primiano Tucci37a30c72022-06-13 14:37:50 +0100695 * Added CREATE_VIEW_FUNCTION operator to define a SQL function that can
696 return a temporary table and yield multiple rows and columns.
Ryan Savitskia7dccea2022-05-10 22:21:47 +0100697 * Changed kernel threads to be represented as single-thread processes in
698 Linux system traces. The (incorrect) legacy behaviour was to treat them
699 as threads of the kthreadd process.
Hector Dearman6e4241d2022-05-07 22:37:34 +0100700 * Added ABS_TIME_STR function which converts a trace timestamp to
701 an ISO8601 string.
Primiano Tucci37a30c72022-06-13 14:37:50 +0100702 * Added ingestion for phase='R' events, used by performance.{now,mark}().
Hector Dearmana9545e52022-05-17 12:23:25 +0100703 * Changed 'trace_to_text' to be named 'traceconv'. The source
704 location also moved from 'tools/trace_to_text' to 'src/traceconv'.
Primiano Tucci682a9982022-05-20 17:13:28 +0100705 * Changed compiler flags, added -mavx2. The previous patch in v22.0 was
706 supposed to add AVX2 support but added only AVX.
Primiano Tucci37a30c72022-06-13 14:37:50 +0100707 * Changed the handling of the last per-cpu sched slices: rather than
708 extending the last event to the end of the trace, the last scheduling
709 event has a -1 duration. UIs are supposed to deal with visual extension.
710 * Removed android_thread_time_in_state metric. It was an experiment and was
711 unused.
712 * Removed `instant` table. All instant events are now 0-duration events in
713 the `slice` table.
714 * Removed the /raw_query REST endpoint from --httpd. This will break very
715 old clients that have not switched over the new streaming-based /query
716 endoint or even newer /websocket.
Primiano Tucci1c889432022-04-01 18:14:29 +0100717 UI:
Primiano Tucci37a30c72022-06-13 14:37:50 +0100718 * Changed detail panel to separate slice args from generic slice properties.
Anna Mayznerf119e5a2024-05-01 10:47:32 +0000719 * Automatically enabled sched_compact when generating trace configs for
Primiano Tucci37a30c72022-06-13 14:37:50 +0100720 Android S+ targets.
Primiano Tucci1c889432022-04-01 18:14:29 +0100721 SDK:
Primiano Tucci37a30c72022-06-13 14:37:50 +0100722 * Added option for recording thread CPU times at the beginning and end of
723 each slice.
724 * Added perfetto::DynamicString() to use non-literal strings as event names
725 in the TRACE_EVENT API.
726 * Remove the pre-SDK consumer_api_deprecated interface. It was introduced
727 for iorapd, now deleted from the Android tree.
Primiano Tucci1c889432022-04-01 18:14:29 +0100728
729
730v25.0 - 2022-04-01:
731 Tracing service and probes:
Primiano Tucci06dab692022-03-15 15:32:33 +0000732 * Added prebuilts for mac-arm64.
Lalit Maganti8d6d7c12022-02-24 20:35:23 +0000733 * Removed merged trace and config protos from Bazel. Embedder should
734 instead depend on the non-merged proto targets.
Ryan Savitski3167ea02022-03-21 20:26:36 +0000735 * Added FtraceConfig.disable_generic_events. If set, the ftrace data source
736 will not emit events for which it doesn't have a compile-time proto
737 message.
Primiano Tucci1c889432022-04-01 18:14:29 +0100738 * Added ingestion support for cros_ec (CrOS sensors) ftrace events.
739 * Added ingestion support for kvm trace events.
740 * Added reporting of atrace failures. Now they are bubbled up to the UI
741 rather than causing atrace data to be silently missing.
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000742 Trace Processor:
Primiano Tucci06dab692022-03-15 15:32:33 +0000743 * Added prebuilts for mac-arm64.
Lalit Maganti68e649c2022-03-31 00:01:31 +0100744 * Changed LIKE comparisions to be case-insenstive. This reverts the change
745 introduced in v22. GLOB should be used where case senstive searches are
746 desired; built-in metrics continue to require the use of GLOB.
Ryan Savitskie65c4052022-03-24 18:22:19 +0000747 * Added an optional dependency from trace processor onto a subset of
748 sources from llvm-project for function name demangling. Bazel embedders
749 might need to update their PERFETTO_CONFIG in perfetto_cfg.bzl to opt in
750 or out of the new dependency. See
751 perfetto/bazel/standalone/perfetto_cfg.bzl for details.
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000752 UI:
Lalit Maganti6b515622022-02-15 14:42:18 +0000753 * Added flow arrows between binder transaction pairs (request/reply
754 and async send/async recv).
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000755 SDK:
Alexander Timin94204c62022-03-14 16:57:32 +0000756 * Added support for writing typed proto messages inside DebugAnnotations.
Mohit Saini5a7403c2022-03-14 18:24:43 +0000757 * Added support for delta encoding of timestamps for TrackEvents.
758 To disable it, refer to `disable_incremental_timestamps` flag in
759 `track_event_config.proto`.
Primiano Tucci1c889432022-04-01 18:14:29 +0100760 Tools:
761 * Added support of gzip-compressed traces to traceconv.
762 * Changed `traceconv text` to use an internal proto->pbtx converter rather
763 than relying on libprotobuf. It could cause some small divergencies in the
764 output format vs past releases.
765 * Added tools/cpu_profile helper script to capture traces with callstack
766 samples.
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000767
768
Primiano Tuccid5184022022-02-10 16:41:56 +0000769v24.2 - 2022-02-10:
770 SDK:
771 * Revert of incremental timestamps, introduced in v24.0.
772 Some clients were depending on non-incremental timestamps.
773 Future releases will re-enable this but offer an opt-out.
774
775
Primiano Tuccid59e9de2022-02-09 10:42:14 +0000776v24.1 - 2022-02-09:
777 Tracing service and probes:
778 * Fixed build failures on Windows.
779 Trace Processor:
780 * Fixed build failures on Windows.
Primiano Tuccid59e9de2022-02-09 10:42:14 +0000781
782
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000783v24.0 - 2022-02-08:
784 Tracing service and probes:
785 * Added "cpufreq_period_ms" in data source "linux.sys_stats" to poll
786 /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq periodically.
787 * Added support for Trusty TEE workqueue events.
788 * Added support for more PMU events in traced_perf.
Primiano Tucci24df3232022-01-26 19:15:17 +0000789 * Changed output format of perfetto --query. Made the output more compact
790 and added a summary of ongoing tracing sessions for the caller UID.
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000791 * Changed timeout for traced stall detection from 2s to 4s.
792 * Changed internal buffer management to split trace filtering in smaller
793 tasks and avoid too large memory allocation when filtering.
794 * Fixed a bug that could cause producers to see Flush() requests after an
795 OnStop() and mis-behave if the tracing session is extremely short.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000796 Trace Processor:
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000797 * Added support for passing multiple SQL statements to ExecuteQuery(). All
798 queries will be executed fully, with the returned iterator yielding rows
799 for the final statement.
800 * Added support for multi-line SQL comments; previously only single line
Lalit Maganti95465982022-01-27 22:41:15 +0000801 comments were supported.
Primiano Tucci4f997ef2022-01-11 20:22:47 +0000802 UI:
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000803 * Added support for parsing instant events from legacy systrace formats.
804 * Added ingestion and visualization for inet_sock_set_state and
805 tcp_retransmit_skb events, showing TCP connections on dedicated tracks.
Primiano Tucci2b2236f2022-01-28 10:50:43 +0000806 * Changed HTTP+RPC to use the /websocket endpoint available in newer
807 versions of trace_processor --httpd.
Primiano Tuccife6c2e32022-02-08 20:59:11 +0000808 * Changed text selection/copy: now allowed by default for DOM elements.
809 * Changed search to also lookup slices by ID when the term is a number.
810 * Changed postMessage() API, suppressed confirmation dialog when the opener
811 is in the same origin, for cases when the UI is self-hosted.
Primiano Tucci4f997ef2022-01-11 20:22:47 +0000812 SDK:
Primiano Tuccid5184022022-02-10 16:41:56 +0000813 * Changed timestamps emitted by the SDK to be incremental by default, using
814 ClockSnapshot + TracePacketDefaults.
Primiano Tucci4f997ef2022-01-11 20:22:47 +0000815
816
817v23.0 - 2022-01-11:
818 Tracing service and probes:
819 * Added workaround for a kernel ftrace bug causing some "comm" fields to be
820 not null-terminated. https://github.com/torvalds/linux/commit/f0a5157803 .
821 * Added ability to talk to the newer AIDL-based health hal in traced_probes.
822 It still falls back on the older HIDL interface for older devices.
823 Trace Processor:
Primiano Tucci1d518b42022-01-11 19:09:45 +0000824 * Changed the argument for the trace path in constructor of TraceProcessor
825 in the Python API from |file_path| to |trace|.
Lalit Maganticb8e0ff2022-01-11 15:36:37 +0000826 |file_path| is deprecated and may be removed in the future.
Primiano Tucci1d518b42022-01-11 19:09:45 +0000827 * Changed the Python API constructor. Now it takes a TraceProcessorConfig
Lalit Maganticb8e0ff2022-01-11 15:36:37 +0000828 instead of passing parameters directly. This may break existing code
829 but migration should be trivial (all current options are still
830 supported).
Primiano Tucci1d518b42022-01-11 19:09:45 +0000831 * Fixed a HTTP keepalive bug in trace_processor --httpd. The bug, introduced
832 in v22.0, caused each RPC request to close the connection, effectively
833 defeating the 'Connection: Keep-Alive', after each query made by the UI.
Primiano Tucci4f997ef2022-01-11 20:22:47 +0000834 * Added parsing of netif_receive_skb events from proto traces.
835 * Added android_netperf metric based on netif events.
836 * Fixed a bug that would cause fetch errors when loading traces > 32 MB when
837 using trace_processor --httpd.
838 * Added a workaround to tokenize properly /proc/pid/cmdline for chrome
839 processes on Linux/CrOS. Chrome rewrites its cmdline replacing \0 -> ' '.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000840 UI:
841 *
842 SDK:
843 *
844
845
Primiano Tucci26e2acb2021-12-07 20:27:53 +0000846v22.1 - 2021-12-07:
847 Tracing service and probes:
848 * Added workaround for a Linux kernel bug causing some ftrace strings to
849 be non-null-terminated (https://github.com/torvalds/linux/commit/f0a5157).
850 Trace Processor:
851 * Fixed build failures on Windows.
852
853
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000854v22.0 - 2021-12-03:
855 Tracing service and probes:
Lalit Maganti7030e782021-11-08 13:12:42 +0000856 * Added Android SDK version to the SystemInfo trace packet.
Primiano Tucci2277f062021-11-08 22:24:05 +0000857 * Changed compiler flags. Assume recent x64 CPUs (-msse4.2 -mavx -mpopcnt).
858 This behavior affects only standalone builds and can be changed by setting
859 enable_perfetto_x64_cpu_opt=false in the GN args.
Daniele Di Proietto4d9665b2021-11-24 18:25:46 +0000860 * The java heap profiler now rescans all the processes every time for
861 continous_dump_config. The scan_pids_only_on_start can be used to restore
862 the old behavior.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000863 * Added support for building on ARM Macs.
864 * Added support for the rss_stat_throttled event on Android via
865 FtraceConfig.throttle_rss_stat. In newer Android kernels the base rss_stat
866 event is now unthrottled. rss_stat used to be throttled by a downstream
867 kernel change, unnecessary after https://lkml.org/lkml/2021/10/25/1411 .
868 atrace.rc configures throttling from userspace at boot.
869 * Fixed a bug that caused IPCs to stall traced and hit the watchdog if in
870 the middle of a suspend/resume. Switched from SND_TIMEO to poll(POLLOUT).
871 * Added "linux.sysfs_power" data source to poll /sys/class/power_supply/
872 and report periodically battery charge and drain rate if supported.
Lalit Maganti33928bc2022-01-27 17:30:08 +0000873 * Add snapshotting for non-BOOTTIME ftrace clocks. This fixes handling of
874 ftrace events from old Linux kernel versions (i.e. 3.x) and adds
875 proper support for using the "global" clock rather than "boot".
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100876 Trace Processor:
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000877 * Speeded up proto trace ingestion by 2x (~20 MB/s -> ~40 MB/s).
Lalit Maganti1cf65eb2021-11-10 16:13:48 +0000878 * Changed LIKE comparisions to be case-senstive. This may break existing
879 queries but was a necessary from a performance perspective.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000880 Going forward, GLOB must be used, instead of LIKE, for checked in metrics
881 to avoid unnecessary slowdowns.
Primiano Tucci2277f062021-11-08 22:24:05 +0000882 * Changed compiler flags, assume recent x64 CPUs (see above).
Hector Dearmanee80bcb2021-11-30 13:51:30 +0000883 * Changed how displayTimeUnit is handled in JSON traces to match catapult.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000884 * Added websocket endpoint to RPC interface to reduce query latency.
885 * Added support for hot-reloading metrics (see //docs/analysis/metrics.md).
Lalit Maganti33928bc2022-01-27 17:30:08 +0000886 * Added ingestion support for non-BOOTTIME ftrace clocks.
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100887 UI:
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000888 * Added ability to save/restore record config. Remember last used config.
889 * Fixed bug causing the recording page to hold onto the USB interface making
890 adb unusable after a recording session.
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100891 SDK:
Primiano Tucci360f0232021-11-04 13:41:08 +0000892 * Added UpdateDataSource() descriptor IPC endpoint to allow updates of the
893 data source capabilities (e.g., category list for track event).
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100894
895
Primiano Tucciea727872021-11-02 21:42:05 +0000896v21.0 - 2021-11-01:
897 Tracing service and probes:
898 * Added reporting of last 8 PERFETTO_LOG() entries and crash keys to
899 crash tombstones on Android.
900 * Changed kallsym parser to save 100ms for starting a tracing session with
901 enable_ksyms=true.
902 * Removed advertisement of the built-in data sources "android.heapprofd",
903 "android.java_hprof", "linux.perf" on Linux and other platforms. Built-in
904 data sources are only used to lazy-start daemons on Android OS.
905 * Changed ACL files on Android atrace.rc to support to up to 24 ftrace cpus.
906 No change on Linux which remains unlimited.
907 Trace Processor:
908 * Changed protobuf decoders to use less stack and fall back on heap sooner
909 (before: 16KB of stack per decoder, after: 1.6KB). It caused problems with
910 some embedders which use smaller per-thread stacks.
911 * Added support for SPAN OUTER JOIN on unpartitioned tables.
912 * Improved performance of as_pandas_dataframe() in the Python API by 16x.
913 UI:
914 * Added visualization of direct_reclaim ftrace events.
915 SDK:
916 * Added perfetto::{Flow,TerminatingFlow} to the track-event library.
917
918
Primiano Tuccia94219a2021-10-05 10:38:24 +0100919v20.1 - 2021-10-05:
920 Tracing service and probes:
921 * Fixed standalone Windows build. Updated the llvm-win toolchain.
922
923
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100924v20.0 - 2021-10-03:
925 Tracing service and probes:
Primiano Tucci5eabf6f2021-09-07 14:49:48 +0100926 * Removed DCHECK that would cause crashes when a debug build of the service
927 is used with a producer built with -DNDEBUG.
Daniele Di Proiettoa4c180e2021-09-15 15:42:34 +0000928 * Changed the service-side field-level filtering configuration protobuf
929 field number, because the feature had a bug. This is effectively
930 equivalent to deprecating the feature and reintroducing it under a
931 different name.
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100932 * Added support for boot tracing on Android. Early kernel tracing (prior to
933 the point when /data is mounted) is not yet supported. For instructions
934 see /docs/case-studies/android-boot-tracing.md .
Primiano Tucci5f303142021-06-02 10:28:50 +0100935 Trace Processor:
Lalit Maganti09002982021-09-10 17:04:08 +0100936 * Added reqiurement of separating queries by semi-colon (;) followed by
937 new-line when specifying a query file with -q to trace processor shell.
Zaina Al-Mashni5ed83f92021-09-09 09:08:38 +0000938 * Added "ancestor_slice_by_stack" and "descendant_slice_by_stack" table
939 functions to walk up and down the slice stacks.
Lalit Maganti09e840c2021-09-22 15:23:17 +0100940 * Overhauled windowed sorting to be based on packet ordering and
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100941 lifecycle events inside the trace instead of time-based ordering.
942 * Removed |SortingMode::kForceFlushPeriodWindowedSort| due to changes to the
943 sorting algorithm, which is now based on Flush events rather than time.
944 Embedders should switch to |SortingMode::kDefaultHeuristics|. Other
945 SortingMode enum values are no-ops and will be removed in future versions.
Primiano Tucci876be6d2021-08-02 20:58:06 +0100946 UI:
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100947 * Added initial flamegraph support for traced_perf callstack samples.
948 * Added initial Pivot table for aggregation of userspace slices. The feature
949 is disabled by default for and requires manual enabling via
950 https://ui.perfetto.dev/#!/flags .
Primiano Tucci876be6d2021-08-02 20:58:06 +0100951 SDK:
Primiano Tucci1a69d012021-09-07 14:52:27 +0100952 * Changed DCHECK and DLOGs to be always disabled in SDK builds, regardless
953 of NDEBUG.
Primiano Tucci876be6d2021-08-02 20:58:06 +0100954
955
Primiano Tuccie356c102021-09-07 11:47:47 +0100956v19.0 - 2021-09-02:
957 Tracing service and probes:
958 * Added ftrace clock reporting to the trace.
959 Trace Processor:
960 * Added support for longs/doubles to RUN_METRIC.
961 * Added power profile data for sunfish, redfin, and bramble.
962 * Added experimental Python library for computing slice breakdowns.
963 * Fixed parsing of JSON escape sequences.
964 * Fixed JSON trace detection.
965 UI:
966 * Added local cacheing of traces. Traces are reloaded in case of refresh or
967 tab being discarded by the browser.
968 * Added icon to distinguish metric-derived tracks.
969 * Added release channel selector to feature flags page.
970 * Fixed crash with null slice names.
971 SDK:
972 * Added some missing NESTABLE_ASYNC legacy trace macros.
973 * Fixed reporting of producer uid in --query.
974 * Fixed version numbering scheme for minor versions. Previously versions
975 were numbered as like v19.0.42 where 42 represented the number of commits
976 since the last major version release. This was ambiguous in the presence
977 of branches. Now versions are numbered like v19.0-ab12cd34 where ab12cd34
978 is the shortened Git commit-ish.
979
980
Primiano Tucci876be6d2021-08-02 20:58:06 +0100981v18.0 - 2021-08-02:
982 Tracing service and probes:
983 * Added cross-compiler toolchains for Linux-{arm,64} based on Debian Sid.
984 These will be used for generating monthly releases' prebuilts via LUCI.
985 Trace Processor:
986 * Added 'android_gpu' metric to report residency information for each GPU
987 frequency (via `trace_processor_shell --run-metrics android_gpu`).
Primiano Tuccie2422be2021-07-20 18:19:45 +0100988 * Removed the RawQuery RPC interface.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100989 UI:
Primiano Tuccie2422be2021-07-20 18:19:45 +0100990 * Added a highlighted section to thread slices to visualize CPU time
Zaina Al-Mashni3911f612021-07-13 18:09:34 +0000991 (darker) verses wall time (lighter).
Primiano Tucci876be6d2021-08-02 20:58:06 +0100992 * Added global counter tracks for perf counters (e.g. "CPU 0 cycles", "CPU 0
993 instructions") when the 'linux.perf' data source (traced_perf) is used.
994 * Added a (feature) 'Flags' page to enable/disable individual metrics.
995 * Fixed races that could cause occasional crashes when loading a trace
996 from a permalink.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100997 SDK:
Primiano Tuccie2422be2021-07-20 18:19:45 +0100998 * Fix undefined reference on ~TracingMuxerFake when building the SDK.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100999
1000
1001v17.0 - 2021-07-02:
1002 Tracing service and probes:
Ryan Savitski6444aad2021-07-02 16:30:57 +01001003 * Fixed a bug in ftrace parsing of absolute timestamps
1004 (RINGBUF_TYPE_TIME_STAMP), encountered on Linux kernels 5.9+.
Primiano Tucci50199ce2021-07-02 14:50:53 +01001005 * Fixed a bug in --save-for-bugreport causing 0-length traces if the
1006 selected trace declared one or more triggers in the config.
1007 * Fixed a bug in tracebox causing the PERFETTO_PRODUCER_SOCK_NAME env
1008 var to be ignored.
1009 Trace Processor:
Primiano Tucci728230d2021-06-16 15:38:35 +01001010 * Changed CORS headers of --httpd mode to allow only https://ui.perfetto.dev
1011 and http://localhost:10000. This affects only CORS-aware browser clients.
Primiano Tucci50199ce2021-07-02 14:50:53 +01001012 * Added GPU frequency metrics.
Primiano Tucci5f303142021-06-02 10:28:50 +01001013 UI:
Primiano Tuccice51d522021-06-03 14:57:45 +01001014 * Fixed ADB connection issues ("unable to reset device") on Windows and Mac.
Primiano Tucci50199ce2021-07-02 14:50:53 +01001015 * Added caching of tracing in the cache storage so that the trace is
1016 re-opened if a tab is killed (Chrome tab discarding or accidental CTRL+W).
Primiano Tucci5f303142021-06-02 10:28:50 +01001017 SDK:
Sami Kyostilac687c2e2021-06-03 13:00:45 +01001018 * Added support for writing track events using custom clock timestamps.
Primiano Tucci5f303142021-06-02 10:28:50 +01001019
1020
Primiano Tucci5ca51f92021-06-08 10:29:35 +01001021v16.1 - 2021-06-08:
1022 Tracing service and probes:
1023 * Cherry-pick of r.android.com/1716718 which missed the v16 branch cut and
1024 fixed MSVC 2019 builds.
1025
1026
Primiano Tucci5f303142021-06-02 10:28:50 +01001027v16.0 - 2021-06-01:
1028 Tracing service and probes:
Primiano Tucci235610f2021-05-24 20:22:43 +01001029 * Added support for building most targets (including traced, SDK and
1030 trace_processor_shell) from Windows using either clang-cl or MSVC 2019.
1031 * Added tracebox, a monolithic binary to capture traces with one command
1032 on Linux and older versions of Android (tested on Android Oreo).
Primiano Tucci5f303142021-06-02 10:28:50 +01001033 * Added support for service-side field-level filtering of traces. The
1034 consumer can pass a filter bytecode and ensure that non-allowed fields
1035 are never emitted in output.
1036 * Added reporting of service version and producer SDK version into the trace
1037 and `perfetto --query`.
1038 * Fixed compatibility with Android versions older than Pie (for sideloading)
1039 which cause failures when trying to enable atrace categories.
Primiano Tucci96755912021-01-05 12:15:17 +01001040 Trace Processor:
Primiano Tucci5f303142021-06-02 10:28:50 +01001041 * Added new RPC interface based on a bidirectional binary pipe. This allows
1042 to simplify integration with out-of-process users. The existing --httpd
1043 interface now exposes a single /rpc endpoint. Older endpoints are still
1044 available for legacy clients.
1045 * Added support for counters and instant events in JSON traces.
1046 * Fixed support of displayTimeUnit in JSON traces.
Primiano Tuccie60b7c82021-03-03 14:09:35 +00001047 UI:
Primiano Tucci41327402021-06-01 20:28:00 +01001048 * Added warning dialog when trying to use a trace_processor_shell --httpd
1049 which is too old.
1050 * Added warning dialog when trying to use a trace_processor_shell --httpd
1051 RPC instance from more than one tab.
Primiano Tucci5f303142021-06-02 10:28:50 +01001052 * Added links to convert the trace to JSON or systrace directly from the UI.
1053 * Changed track sorting logic. Tracks are now sorted in groups (e.g.,
1054 scheduling tracks, summary tracks, frame timeline tracks).
1055 * Fixed crashes happening flakily when pushing traces via window.open().
Primiano Tucci8220de22021-05-05 09:53:37 +01001056
1057
1058v15.0 - 2021-05-05:
1059 Tracing service and probes:
1060 * Added support for {host,target}=aarch64 standalone builds.
1061 * Added --background cmdline switch to traced and traced_probes services.
1062 * Changed trigger_perfetto to ignore unknown command line arguments to
1063 preserve forward compatibility.
1064 * Added -a / --app cmdline argument to tools/record_android_trace.
1065 Trace Processor:
1066 * Added sanitisation of keys in nested debug annotation dictionaries.
1067 * Changed Android startup metric: count CPU time of JIT thread pool, report
1068 timestamp of activities during startup.
1069 * Changed android_surfaceflinger metric, added missed frame counters.
1070 * Changed version of SQLite to 3.35.4.
1071 * Fixed importing of JSON traces with decimal (sub-us) timestamp.
1072 * Fixed prepending "debug." prefix to debug annotations with non-interned
1073 names.
1074 UI:
1075 * Added support to visualize the lifetime of individual dmabuf allocations
1076 as async slices (datasource: already existing ftrace dmabuf event).
1077 * Fixed visualization of unfinished slices to extend to the end of the
1078 viewport.
1079 SDK:
Alexander Timin129bdcf2021-04-16 11:36:37 +00001080 * Added support for passing arbitrary number of debug annotations to
1081 TRACE_EVENT and combining them with lambdas.
1082 * Added support for writing typed TrackEvent arguments using TRACE_EVENT
1083 inline without lambdas.
Primiano Tucci8220de22021-05-05 09:53:37 +01001084 * Changed ConvertTimestampToTraceTimeNs to be a member of
1085 TraceTimestampTraits<T> struct instead of a standalone function.
1086 * Changed TracedValue to use nested DebugAnnotation proto instead of
1087 DebugAnnotation::NestedValue.
Primiano Tucci7454e1a2021-04-01 13:03:19 +01001088
1089
1090v14.0 - 2021-04-01:
1091 Tracing service and probes:
1092 * Added support for polling power rails on Android from the newer
1093 IPowerStats AIDL interface (previously using only the HAL interface).
1094 * Fixed native heap profiler crash when ABI of heapprofd and profiled
1095 process mismatch.
1096 * Changed encoding format of Anroid managed heap profiler to reduce heap
1097 dump sizes by delta-encoding object IDs.
1098 Trace Processor:
1099 * Added activity create/resume, layout inflation and resource timings to
1100 the Android startup metric.
1101 * Added chrome metadata key/value pairs (e.g. chrome version) into the
1102 `metadata` table with 'cr-' prefixed keys.
1103 * Added dma-buf-based memory metrics reporting total/avg/min/max dmabuf
1104 allocation per-dmabuf-heap and per-process.
1105 * Removed |force_full_sort| flag from config. This has been replaced
1106 by setting the sorting mode to force a full sort.
1107 UI:
1108 * Added tools/symbolize-ui-crash script to resolve crash reports via
1109 TypeScript source maps.
1110 * Fixed newlines when copying Android event log lines into the clipboard.
1111 * Fixed crash when selecting "Did not finish" slices.
1112 * Fixed OOM dialog to give actionable instructions when opening large traces
1113 rather than suggesting to file a bug.
Sami Kyostilaedf7c862021-03-11 13:33:35 +00001114 SDK:
Primiano Tucci7454e1a2021-04-01 13:03:19 +01001115 * Added /meson.build for bundling /sdk/perfetto.{cc,h} in Meson builds.
1116 * Added support for counter trace points with the TRACE_COUNTER macro.
1117
Primiano Tuccie60b7c82021-03-03 14:09:35 +00001118
1119v13.0 - 2021-03-01:
1120 Tracing service and probes:
1121 * Added ability to sample callstacks using kernel tracepoints as timebase.
1122 * Added abililty to record the perf timebase counter values into the trace,
1123 both combined callstack+counter or counter-only.
1124 * Added abillity to trigger traces based on VM pressure on Android. Requires
1125 a dedicated tracing instance in $tracefs/instances/mm_events.
1126 Trace Processor:
Lalit Maganti88eb6982021-03-01 14:28:51 +00001127 * Added sorting mode to trace processor config to specify how trace
1128 processor should sort events. The |force_full_sort| flag has been
1129 deprecated (with replacement) and will be removed in the next version.
Primiano Tuccie60b7c82021-03-03 14:09:35 +00001130 * Added ingestion of frame timeline events into the
1131 {expected,actual}_frame_timeline_slice tables.
1132 * Added support for Mali's trace_marker_write ftrace event.
1133 * Added memory metric based on newer android_fastrpc kernel events.
Primiano Tucci96755912021-01-05 12:15:17 +01001134 UI:
Primiano Tuccie60b7c82021-03-03 14:09:35 +00001135 * Added flow events support for instant events and async tracks.
1136 * Added support for Android frame timeline events. They allow inspecting
1137 end-to-end expected vs actual app-to-surfaceflinger frame times.
1138 * Added ability to switch between Canary and Stable channels in the UI.
1139 * Added ability to drag&drop to open trace files.
1140 * Changed UI serving infrastructure, old ui versions can be now retrieved by
1141 directly opening https://ui.perfetto.dev/v12.1.269/ .
1142 * Removed thread state track for threads that have no activity.
Sami Kyostilae8c0ff52021-02-16 11:26:16 +00001143 SDK:
1144 * Use process start time hashed with the process id as a unique process
1145 identifier, allowing multiple independent users of the SDK in the same
1146 process to interleave their events on shared tracks.
Sami Kyostila86b10c52021-02-16 16:50:42 +00001147 * Record process and thread names into the trace.
Sami Kyostila67cdc662021-02-26 16:42:14 +00001148 * Add ring buffer tracing support, i.e., periodic clearing of incremental
1149 state.
Primiano Tuccie60b7c82021-03-03 14:09:35 +00001150 Misc:
1151 * Convert python scripts to python3.
Primiano Tucci96755912021-01-05 12:15:17 +01001152
1153
Primiano Tucci71a92392021-02-01 23:45:28 +01001154v12.1 - 2021-02-01:
1155 Misc:
1156 * Fixed CHANGELOG which was missed in the 12.0 branch cut, causing
1157 mis-labeling of the version code in the v12.x branch as v11.0..N
1158
1159
Primiano Tucci9c294a42021-02-01 18:04:23 +01001160v12.0 - 2021-02-01:
1161 Tracing service and probes:
1162 * Added more helpful error messages if the client library is used without
1163 having been initialized.
1164 * Added //tools/record_android_trace script to facilitate recording traces
1165 from Android devices, automating start + stop-via-ctrl+c + pull + open.
1166 * Added auto-attachment of traces to Android bugreports if dumpstate is
1167 invoked when a trace with bugreport_score > 0 is running.
1168 SDK:
1169 * Added ability to customize the timestamp of events via
1170 ConvertTimestampToTraceTimeNs().
1171 * Fixed support for category names that contain a space.
1172 Trace Processor:
1173 * Added ingestion and query support for Android end-to-end frame timing
1174 events through the {actual, expected}_frame_timeline_slice tables.
1175 * Added time-to-reportFullyDrawn (Android's API) to startup metrics.
1176 * Fixed excessive memory usage when decoding traces containing callstacks
1177 (https://github.com/google/perfetto/issues/83).
1178 UI:
1179 * Added ability to inspect the full trace config string from the
1180 'Info and stats' page.
1181 * Fixed 'TABLE/VIEW XXX already exists' in the Metrics page when running the
1182 same metric twice.
1183 * Fixed sorting of tracks using numeric sorting instead of lexicographic:
1184 Thread {1, 2, 10, 11, 20} rather than Thread {1, 10, 11, 2, 20}.
1185 * Fixed CSP-related bug that was preventing the UI to work on Firefox.
1186 * Changed max zoom resolution to allow to zoom to sub-us events.
1187
1188
Primiano Tucci96755912021-01-05 12:15:17 +01001189v11.0 - 2021-01-01:
1190 Tracing service and probes:
Sami Kyostilaae504d42020-12-02 12:00:25 +00001191 * Added trace packet interceptor API for rerouting trace data into
1192 non-Perfetto systems.
Sami Kyostila6c151262020-12-15 18:48:51 +00001193 * Added support for printing track events to the console.
Sami Kyostila2778ac82020-12-21 16:12:27 +00001194 * Added a way to observe track event tracing sessions starting and
1195 stopping.
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001196 Trace Processor:
Primiano Tucci96755912021-01-05 12:15:17 +01001197 * Added "ancestor_slice" and "experimental_ancestor_stack_profile_callsite"
1198 table functions to look up ancestors of CPU stack samples in profiler
1199 tables.
1200 * Added power metric reporting suspend/resume time periods.
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001201 UI:
Primiano Tucci96755912021-01-05 12:15:17 +01001202 * Fixed CPU time calculation in example queries.
1203 * Added tracks to debug Android SystemUI jank.
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001204
Primiano Tucci5d2be3a2020-12-01 20:42:45 +01001205
1206v10.0 - 2020-12-01:
1207 Tracing service and probes:
1208 * Fixed crash of tracing service if a client is unresponsive on the IPC
1209 channel. Clients are disconnected if they don't respond to IPCs for 10s.
1210 * Added cmdline arguments for integration within ChromeOS system image
1211 (--{producer,consumer}-socket-{group,mode} for chmod-ing sockets).
1212 * Changed path lookup logic for traced socket. /run/perfetto/ is used if the
1213 directory exists, falling back on /tmp/ otherwise.
1214 * Added support for kernel frame symbolization to the traced_perf callstack
1215 sampler.
1216 * Added support for resolving ftrace event arguments that require
1217 symbolization against printk_format.
1218 Trace Processor:
1219 * Added .read command to inject a SQL query file, similar to the -q cmdline.
1220 * Added trace-based metrics to root cause jank in Android System UI.
1221 * Added symbolization support for ELF files on Windows for heap and
1222 callstack profilers.
1223 * Added support for symbolizing names of workqueue ftrace events.
1224 * Improved Android startup metric with activity restart time.
1225 UI:
1226 * Added support for navigating flows with Ctrl+[ / Ctr+].
1227 * Improved query result panel, moved to the bottom group allowing
1228 simultaneous query result and timeline views.
1229 * Fixed data corruption when recording traces via the WebUSB-based Record
1230 page in the UI.
1231
1232
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001233v9.0 - 2020-11-01:
1234 Tracing service and probes:
Sami Kyostilaf99230f2020-10-15 10:38:32 +00001235 * Added support for recording traces from a system service through the
1236 client API.
1237 * The client library now reconnects producers automatically if the
1238 connection to the tracing service is lost. Also fixed crashes in ongoing
1239 tracing sessions when a disconnect occurs.
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001240 * Added support for dpu and g2d ftrace events.
1241 * Enabled commit batching and producer side patching of chunks.
1242 * Add support for symbolizing kernel symbols for ftrace events.
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001243 Trace Processor:
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001244 * Fixed type affinity of string columns.
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001245 UI:
Lalit Maganti09549602020-10-01 16:47:00 +01001246 * Added initial support for running metrics from the UI.
Isabelle Taylor8546cee2020-10-30 14:43:53 +00001247 * Added support for displaying all flows when a slice or area is selected.
1248 * Highlight nodes that match the 'focus' string in the flamegraph.
1249 * Added search within slice args.
1250 * Fixed details panel height and moved query panel into details panel.
1251 * Enabled re-sharing of postMessage traces by echoing back the original URL.
1252 * Improved record page error messages.
Lalit Maganti09549602020-10-01 16:47:00 +01001253
1254
1255v8.0 - 2020-10-01:
1256 Tracing service and probes:
1257 * Added API for querying registered data sources and their capabilities.
1258 * Added support for profiling heap allocations on Linux via LD_PRELOAD.
1259 * Fixed possible race when initializing the consumer library.
1260 * Fixed subtle bugs on systems with 16KB system pages.
1261 Trace Processor:
1262 * Added a table which lists available metrics.
1263 * Added Python bindings on PyPi in the 'perfetto' package.
1264 * Added support for running trace_processor_shell on Android.
1265 * Added per-process metrics for GPU memory usage.
1266 * Added support for exporting flow events to JSON.
1267 * Added dynamic tables for navigating between slices of flows.
1268 UI:
1269 * Changed time marking: horizontal selection doesn't gray out anymore,
1270 pressing 'm' marks the range.
1271 * Added initial support for displaying flow event arrows.
1272 * Improved ordering of all thread tracks under process grouping.
1273 * Fixed UI crashes due to metric errors
1274 * Fixed selection of thread state slices.
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001275
1276
Primiano Tucci816506e2020-09-01 18:13:12 +02001277v7.0 - 2020-09-01:
1278 Tracing service and probes:
1279 * Added auto-reconnection to the SDK. Tracing::Initialize() now retries in
1280 the background, instead of failing, if the tracing service is unrechable.
1281 * Added support for recording cpuhp (CPU hotplug) ftrace events.
1282 * Fixed heap profiling unwinding on multi-ABI systems.
1283 * Fixed reporting of live objects in the native heap profiler when using
1284 --dump-at-max.
1285 * Fixed crash when writing trace events with field nesting level > 10.
1286 Trace Processor:
1287 * Added Python bindings, see
1288 https://perfetto.dev/docs/analysis/trace-processor#python-api .
1289 * Added ingestion for Chrome instant events and Chrome flow events.
1290 * Added ingestion for Android GPU memory events and sched_blocked_reason.
1291 * Added WebView power metric.
1292 * Added support for WSL1 where Async I/O is not available.
1293 * Improved detection of Android suspend/resume events.
1294 UI:
1295 * Added GPU memory recording controls and ingestion code. Requires a recent
1296 Android 12+ kernel.
1297 * Added details panel for flow events, showed when the user selects a slice
1298 involved in a flow (arrows in the UI are still being worked on).
1299 * Added instant events rendering.
1300 * Added Google Analytics.
1301 * Fixed I/O thread-states in 4.14 kernels to deal with the removal of
1302 wake-kill using sched_blocked_reason.
1303 * Fixed "Perfetto UI started debugging this browser" showing when opening
1304 the UI and the Chrome extension is installed.
1305 Misc:
1306 * Update language to comply with Android's inclusive language guidance.
1307
1308
Primiano Tucci6d7badc2020-07-31 19:03:27 +02001309v6.0 - 2020-08-01:
1310 Tracing service and probes:
1311 * Added ftrace thermal events.
1312 * Added support for custom allocators to the heap profiler. Allows
1313 developers to report memory allocations that are not done through malloc.
1314 * Added detailed timestamping of key tracing session events.
1315 * Added support for building tracing services on CrOS (system-wide tracing).
1316 * Fixed filtering out of stale ftrace data that predates the beginning of
1317 the tracing session.
1318 Trace Processor:
1319 * Improved profile symbolizer. PERFETTO_SYMBOLIZER_MODE=index discovers
1320 symbol files by build id rather than name.
1321 * Added screen-state Android metrics.
1322 UI:
1323 * Added 'Info and stats' page to debug data losses and trace stats.
1324 * Added full cmdline to process detail panel.
1325 * Improved performance of async tracks using quantized queries.
1326 * Improved performance of counter and slice tracks for long traces by
1327 pre-caching quantized track data.
1328 * Improved actionablility of crash dialog when the Wasm module OOMs.
1329
1330
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001331v5.0 - 2020-07-01:
1332 Tracing service and probes:
1333 * Added gpu_mem_total ftrace event.
1334 * Added TrustZone (scm start/end) event.
1335 * Added protos for GPU memory tracking and updated render stages proto.
1336 * Added time_in_state probe for Android (CPU time broken down by frequency).
1337
Primiano Tucci5b044cc2023-08-10 18:33:14 +01001338
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001339 Trace Processor:
1340 * Added ingestion of IRQ and SoftIRQ events.
1341 * Added ingestion of workqueue events. KAddr symbolization still missing.
1342 * Added ingestion of voltage regulators and board clock change events.
1343 * Added ingestion of new ION ion_buffer_create/destroy events.
1344 * Added ingestion of TrustZone (scm start/end) events.
1345 * Added SurfaceFlinger derived events (tracking of missed frames).
1346 * Changed parsing of scheduler task state on 4.14 kernels.
1347 * Changed importing of Java heap graphs: allow partial dumps.
1348 * Improved performance of the SQL query engine.
1349
Primiano Tucci5b044cc2023-08-10 18:33:14 +01001350
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001351 UI:
1352 * Added dedicated query page for custom SQL queries.
1353 * Added navigation links for Binder slices.
1354 * Removed overview summary mode when zoomed out.
1355 * Fixed recording page when targeting Android P.
1356 * Improved slice pan/zoom performance by quantizing.