blob: ad0ce1793ee813721c9a5f98cafbd61fbabdaae3 [file] [log] [blame]
Primiano Tucci2ab19f62020-07-01 21:28:31 +01001Unreleased:
2 Tracing service and probes:
Primiano Tucci1c889432022-04-01 18:14:29 +01003 *
4 Trace Processor:
5 *
6 UI:
7 *
8 SDK:
9 *
10
11
12v25.0 - 2022-04-01:
13 Tracing service and probes:
Primiano Tucci06dab692022-03-15 15:32:33 +000014 * Added prebuilts for mac-arm64.
Lalit Maganti8d6d7c12022-02-24 20:35:23 +000015 * Removed merged trace and config protos from Bazel. Embedder should
16 instead depend on the non-merged proto targets.
Ryan Savitski3167ea02022-03-21 20:26:36 +000017 * Added FtraceConfig.disable_generic_events. If set, the ftrace data source
18 will not emit events for which it doesn't have a compile-time proto
19 message.
Primiano Tucci1c889432022-04-01 18:14:29 +010020 * Added ingestion support for cros_ec (CrOS sensors) ftrace events.
21 * Added ingestion support for kvm trace events.
22 * Added reporting of atrace failures. Now they are bubbled up to the UI
23 rather than causing atrace data to be silently missing.
Primiano Tuccife6c2e32022-02-08 20:59:11 +000024 Trace Processor:
Primiano Tucci06dab692022-03-15 15:32:33 +000025 * Added prebuilts for mac-arm64.
Lalit Maganti68e649c2022-03-31 00:01:31 +010026 * Changed LIKE comparisions to be case-insenstive. This reverts the change
27 introduced in v22. GLOB should be used where case senstive searches are
28 desired; built-in metrics continue to require the use of GLOB.
Ryan Savitskie65c4052022-03-24 18:22:19 +000029 * Added an optional dependency from trace processor onto a subset of
30 sources from llvm-project for function name demangling. Bazel embedders
31 might need to update their PERFETTO_CONFIG in perfetto_cfg.bzl to opt in
32 or out of the new dependency. See
33 perfetto/bazel/standalone/perfetto_cfg.bzl for details.
Primiano Tuccife6c2e32022-02-08 20:59:11 +000034 UI:
Lalit Maganti6b515622022-02-15 14:42:18 +000035 * Added flow arrows between binder transaction pairs (request/reply
36 and async send/async recv).
Primiano Tuccife6c2e32022-02-08 20:59:11 +000037 SDK:
Alexander Timin94204c62022-03-14 16:57:32 +000038 * Added support for writing typed proto messages inside DebugAnnotations.
Mohit Saini5a7403c2022-03-14 18:24:43 +000039 * Added support for delta encoding of timestamps for TrackEvents.
40 To disable it, refer to `disable_incremental_timestamps` flag in
41 `track_event_config.proto`.
Primiano Tucci1c889432022-04-01 18:14:29 +010042 Tools:
43 * Added support of gzip-compressed traces to traceconv.
44 * Changed `traceconv text` to use an internal proto->pbtx converter rather
45 than relying on libprotobuf. It could cause some small divergencies in the
46 output format vs past releases.
47 * Added tools/cpu_profile helper script to capture traces with callstack
48 samples.
Primiano Tuccife6c2e32022-02-08 20:59:11 +000049
50
Primiano Tuccid5184022022-02-10 16:41:56 +000051v24.2 - 2022-02-10:
52 SDK:
53 * Revert of incremental timestamps, introduced in v24.0.
54 Some clients were depending on non-incremental timestamps.
55 Future releases will re-enable this but offer an opt-out.
56
57
Primiano Tuccid59e9de2022-02-09 10:42:14 +000058v24.1 - 2022-02-09:
59 Tracing service and probes:
60 * Fixed build failures on Windows.
61 Trace Processor:
62 * Fixed build failures on Windows.
Primiano Tuccid59e9de2022-02-09 10:42:14 +000063
64
Primiano Tuccife6c2e32022-02-08 20:59:11 +000065v24.0 - 2022-02-08:
66 Tracing service and probes:
67 * Added "cpufreq_period_ms" in data source "linux.sys_stats" to poll
68 /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq periodically.
69 * Added support for Trusty TEE workqueue events.
70 * Added support for more PMU events in traced_perf.
Primiano Tucci24df3232022-01-26 19:15:17 +000071 * Changed output format of perfetto --query. Made the output more compact
72 and added a summary of ongoing tracing sessions for the caller UID.
Primiano Tuccife6c2e32022-02-08 20:59:11 +000073 * Changed timeout for traced stall detection from 2s to 4s.
74 * Changed internal buffer management to split trace filtering in smaller
75 tasks and avoid too large memory allocation when filtering.
76 * Fixed a bug that could cause producers to see Flush() requests after an
77 OnStop() and mis-behave if the tracing session is extremely short.
Primiano Tuccie9e81c02021-12-03 18:02:58 +000078 Trace Processor:
Primiano Tuccife6c2e32022-02-08 20:59:11 +000079 * Added support for passing multiple SQL statements to ExecuteQuery(). All
80 queries will be executed fully, with the returned iterator yielding rows
81 for the final statement.
82 * Added support for multi-line SQL comments; previously only single line
Lalit Maganti95465982022-01-27 22:41:15 +000083 comments were supported.
Primiano Tucci4f997ef2022-01-11 20:22:47 +000084 UI:
Primiano Tuccife6c2e32022-02-08 20:59:11 +000085 * Added support for parsing instant events from legacy systrace formats.
86 * Added ingestion and visualization for inet_sock_set_state and
87 tcp_retransmit_skb events, showing TCP connections on dedicated tracks.
Primiano Tucci2b2236f2022-01-28 10:50:43 +000088 * Changed HTTP+RPC to use the /websocket endpoint available in newer
89 versions of trace_processor --httpd.
Primiano Tuccife6c2e32022-02-08 20:59:11 +000090 * Changed text selection/copy: now allowed by default for DOM elements.
91 * Changed search to also lookup slices by ID when the term is a number.
92 * Changed postMessage() API, suppressed confirmation dialog when the opener
93 is in the same origin, for cases when the UI is self-hosted.
Primiano Tucci4f997ef2022-01-11 20:22:47 +000094 SDK:
Primiano Tuccid5184022022-02-10 16:41:56 +000095 * Changed timestamps emitted by the SDK to be incremental by default, using
96 ClockSnapshot + TracePacketDefaults.
Primiano Tucci4f997ef2022-01-11 20:22:47 +000097
98
99v23.0 - 2022-01-11:
100 Tracing service and probes:
101 * Added workaround for a kernel ftrace bug causing some "comm" fields to be
102 not null-terminated. https://github.com/torvalds/linux/commit/f0a5157803 .
103 * Added ability to talk to the newer AIDL-based health hal in traced_probes.
104 It still falls back on the older HIDL interface for older devices.
105 Trace Processor:
Primiano Tucci1d518b42022-01-11 19:09:45 +0000106 * Changed the argument for the trace path in constructor of TraceProcessor
107 in the Python API from |file_path| to |trace|.
Lalit Maganticb8e0ff2022-01-11 15:36:37 +0000108 |file_path| is deprecated and may be removed in the future.
Primiano Tucci1d518b42022-01-11 19:09:45 +0000109 * Changed the Python API constructor. Now it takes a TraceProcessorConfig
Lalit Maganticb8e0ff2022-01-11 15:36:37 +0000110 instead of passing parameters directly. This may break existing code
111 but migration should be trivial (all current options are still
112 supported).
Primiano Tucci1d518b42022-01-11 19:09:45 +0000113 * Fixed a HTTP keepalive bug in trace_processor --httpd. The bug, introduced
114 in v22.0, caused each RPC request to close the connection, effectively
115 defeating the 'Connection: Keep-Alive', after each query made by the UI.
Primiano Tucci4f997ef2022-01-11 20:22:47 +0000116 * Added parsing of netif_receive_skb events from proto traces.
117 * Added android_netperf metric based on netif events.
118 * Fixed a bug that would cause fetch errors when loading traces > 32 MB when
119 using trace_processor --httpd.
120 * Added a workaround to tokenize properly /proc/pid/cmdline for chrome
121 processes on Linux/CrOS. Chrome rewrites its cmdline replacing \0 -> ' '.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000122 UI:
123 *
124 SDK:
125 *
126
127
Primiano Tucci26e2acb2021-12-07 20:27:53 +0000128v22.1 - 2021-12-07:
129 Tracing service and probes:
130 * Added workaround for a Linux kernel bug causing some ftrace strings to
131 be non-null-terminated (https://github.com/torvalds/linux/commit/f0a5157).
132 Trace Processor:
133 * Fixed build failures on Windows.
134
135
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000136v22.0 - 2021-12-03:
137 Tracing service and probes:
Lalit Maganti7030e782021-11-08 13:12:42 +0000138 * Added Android SDK version to the SystemInfo trace packet.
Primiano Tucci2277f062021-11-08 22:24:05 +0000139 * Changed compiler flags. Assume recent x64 CPUs (-msse4.2 -mavx -mpopcnt).
140 This behavior affects only standalone builds and can be changed by setting
141 enable_perfetto_x64_cpu_opt=false in the GN args.
Daniele Di Proietto4d9665b2021-11-24 18:25:46 +0000142 * The java heap profiler now rescans all the processes every time for
143 continous_dump_config. The scan_pids_only_on_start can be used to restore
144 the old behavior.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000145 * Added support for building on ARM Macs.
146 * Added support for the rss_stat_throttled event on Android via
147 FtraceConfig.throttle_rss_stat. In newer Android kernels the base rss_stat
148 event is now unthrottled. rss_stat used to be throttled by a downstream
149 kernel change, unnecessary after https://lkml.org/lkml/2021/10/25/1411 .
150 atrace.rc configures throttling from userspace at boot.
151 * Fixed a bug that caused IPCs to stall traced and hit the watchdog if in
152 the middle of a suspend/resume. Switched from SND_TIMEO to poll(POLLOUT).
153 * Added "linux.sysfs_power" data source to poll /sys/class/power_supply/
154 and report periodically battery charge and drain rate if supported.
Lalit Maganti33928bc2022-01-27 17:30:08 +0000155 * Add snapshotting for non-BOOTTIME ftrace clocks. This fixes handling of
156 ftrace events from old Linux kernel versions (i.e. 3.x) and adds
157 proper support for using the "global" clock rather than "boot".
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100158 Trace Processor:
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000159 * Speeded up proto trace ingestion by 2x (~20 MB/s -> ~40 MB/s).
Lalit Maganti1cf65eb2021-11-10 16:13:48 +0000160 * Changed LIKE comparisions to be case-senstive. This may break existing
161 queries but was a necessary from a performance perspective.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000162 Going forward, GLOB must be used, instead of LIKE, for checked in metrics
163 to avoid unnecessary slowdowns.
Primiano Tucci2277f062021-11-08 22:24:05 +0000164 * Changed compiler flags, assume recent x64 CPUs (see above).
Hector Dearmanee80bcb2021-11-30 13:51:30 +0000165 * Changed how displayTimeUnit is handled in JSON traces to match catapult.
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000166 * Added websocket endpoint to RPC interface to reduce query latency.
167 * Added support for hot-reloading metrics (see //docs/analysis/metrics.md).
Lalit Maganti33928bc2022-01-27 17:30:08 +0000168 * Added ingestion support for non-BOOTTIME ftrace clocks.
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100169 UI:
Primiano Tuccie9e81c02021-12-03 18:02:58 +0000170 * Added ability to save/restore record config. Remember last used config.
171 * Fixed bug causing the recording page to hold onto the USB interface making
172 adb unusable after a recording session.
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100173 SDK:
Primiano Tucci360f0232021-11-04 13:41:08 +0000174 * Added UpdateDataSource() descriptor IPC endpoint to allow updates of the
175 data source capabilities (e.g., category list for track event).
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100176
177
Primiano Tucciea727872021-11-02 21:42:05 +0000178v21.0 - 2021-11-01:
179 Tracing service and probes:
180 * Added reporting of last 8 PERFETTO_LOG() entries and crash keys to
181 crash tombstones on Android.
182 * Changed kallsym parser to save 100ms for starting a tracing session with
183 enable_ksyms=true.
184 * Removed advertisement of the built-in data sources "android.heapprofd",
185 "android.java_hprof", "linux.perf" on Linux and other platforms. Built-in
186 data sources are only used to lazy-start daemons on Android OS.
187 * Changed ACL files on Android atrace.rc to support to up to 24 ftrace cpus.
188 No change on Linux which remains unlimited.
189 Trace Processor:
190 * Changed protobuf decoders to use less stack and fall back on heap sooner
191 (before: 16KB of stack per decoder, after: 1.6KB). It caused problems with
192 some embedders which use smaller per-thread stacks.
193 * Added support for SPAN OUTER JOIN on unpartitioned tables.
194 * Improved performance of as_pandas_dataframe() in the Python API by 16x.
195 UI:
196 * Added visualization of direct_reclaim ftrace events.
197 SDK:
198 * Added perfetto::{Flow,TerminatingFlow} to the track-event library.
199
200
Primiano Tuccia94219a2021-10-05 10:38:24 +0100201v20.1 - 2021-10-05:
202 Tracing service and probes:
203 * Fixed standalone Windows build. Updated the llvm-win toolchain.
204
205
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100206v20.0 - 2021-10-03:
207 Tracing service and probes:
Primiano Tucci5eabf6f2021-09-07 14:49:48 +0100208 * Removed DCHECK that would cause crashes when a debug build of the service
209 is used with a producer built with -DNDEBUG.
Daniele Di Proiettoa4c180e2021-09-15 15:42:34 +0000210 * Changed the service-side field-level filtering configuration protobuf
211 field number, because the feature had a bug. This is effectively
212 equivalent to deprecating the feature and reintroducing it under a
213 different name.
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100214 * Added support for boot tracing on Android. Early kernel tracing (prior to
215 the point when /data is mounted) is not yet supported. For instructions
216 see /docs/case-studies/android-boot-tracing.md .
Primiano Tucci5f303142021-06-02 10:28:50 +0100217 Trace Processor:
Lalit Maganti09002982021-09-10 17:04:08 +0100218 * Added reqiurement of separating queries by semi-colon (;) followed by
219 new-line when specifying a query file with -q to trace processor shell.
Zaina Al-Mashni5ed83f92021-09-09 09:08:38 +0000220 * Added "ancestor_slice_by_stack" and "descendant_slice_by_stack" table
221 functions to walk up and down the slice stacks.
Lalit Maganti09e840c2021-09-22 15:23:17 +0100222 * Overhauled windowed sorting to be based on packet ordering and
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100223 lifecycle events inside the trace instead of time-based ordering.
224 * Removed |SortingMode::kForceFlushPeriodWindowedSort| due to changes to the
225 sorting algorithm, which is now based on Flush events rather than time.
226 Embedders should switch to |SortingMode::kDefaultHeuristics|. Other
227 SortingMode enum values are no-ops and will be removed in future versions.
Primiano Tucci876be6d2021-08-02 20:58:06 +0100228 UI:
Primiano Tucci6a46cc72021-10-04 18:57:12 +0100229 * Added initial flamegraph support for traced_perf callstack samples.
230 * Added initial Pivot table for aggregation of userspace slices. The feature
231 is disabled by default for and requires manual enabling via
232 https://ui.perfetto.dev/#!/flags .
Primiano Tucci876be6d2021-08-02 20:58:06 +0100233 SDK:
Primiano Tucci1a69d012021-09-07 14:52:27 +0100234 * Changed DCHECK and DLOGs to be always disabled in SDK builds, regardless
235 of NDEBUG.
Primiano Tucci876be6d2021-08-02 20:58:06 +0100236
237
Primiano Tuccie356c102021-09-07 11:47:47 +0100238v19.0 - 2021-09-02:
239 Tracing service and probes:
240 * Added ftrace clock reporting to the trace.
241 Trace Processor:
242 * Added support for longs/doubles to RUN_METRIC.
243 * Added power profile data for sunfish, redfin, and bramble.
244 * Added experimental Python library for computing slice breakdowns.
245 * Fixed parsing of JSON escape sequences.
246 * Fixed JSON trace detection.
247 UI:
248 * Added local cacheing of traces. Traces are reloaded in case of refresh or
249 tab being discarded by the browser.
250 * Added icon to distinguish metric-derived tracks.
251 * Added release channel selector to feature flags page.
252 * Fixed crash with null slice names.
253 SDK:
254 * Added some missing NESTABLE_ASYNC legacy trace macros.
255 * Fixed reporting of producer uid in --query.
256 * Fixed version numbering scheme for minor versions. Previously versions
257 were numbered as like v19.0.42 where 42 represented the number of commits
258 since the last major version release. This was ambiguous in the presence
259 of branches. Now versions are numbered like v19.0-ab12cd34 where ab12cd34
260 is the shortened Git commit-ish.
261
262
Primiano Tucci876be6d2021-08-02 20:58:06 +0100263v18.0 - 2021-08-02:
264 Tracing service and probes:
265 * Added cross-compiler toolchains for Linux-{arm,64} based on Debian Sid.
266 These will be used for generating monthly releases' prebuilts via LUCI.
267 Trace Processor:
268 * Added 'android_gpu' metric to report residency information for each GPU
269 frequency (via `trace_processor_shell --run-metrics android_gpu`).
Primiano Tuccie2422be2021-07-20 18:19:45 +0100270 * Removed the RawQuery RPC interface.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100271 UI:
Primiano Tuccie2422be2021-07-20 18:19:45 +0100272 * Added a highlighted section to thread slices to visualize CPU time
Zaina Al-Mashni3911f612021-07-13 18:09:34 +0000273 (darker) verses wall time (lighter).
Primiano Tucci876be6d2021-08-02 20:58:06 +0100274 * Added global counter tracks for perf counters (e.g. "CPU 0 cycles", "CPU 0
275 instructions") when the 'linux.perf' data source (traced_perf) is used.
276 * Added a (feature) 'Flags' page to enable/disable individual metrics.
277 * Fixed races that could cause occasional crashes when loading a trace
278 from a permalink.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100279 SDK:
Primiano Tuccie2422be2021-07-20 18:19:45 +0100280 * Fix undefined reference on ~TracingMuxerFake when building the SDK.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100281
282
283v17.0 - 2021-07-02:
284 Tracing service and probes:
Ryan Savitski6444aad2021-07-02 16:30:57 +0100285 * Fixed a bug in ftrace parsing of absolute timestamps
286 (RINGBUF_TYPE_TIME_STAMP), encountered on Linux kernels 5.9+.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100287 * Fixed a bug in --save-for-bugreport causing 0-length traces if the
288 selected trace declared one or more triggers in the config.
289 * Fixed a bug in tracebox causing the PERFETTO_PRODUCER_SOCK_NAME env
290 var to be ignored.
291 Trace Processor:
Primiano Tucci728230d2021-06-16 15:38:35 +0100292 * Changed CORS headers of --httpd mode to allow only https://ui.perfetto.dev
293 and http://localhost:10000. This affects only CORS-aware browser clients.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100294 * Added GPU frequency metrics.
Primiano Tucci5f303142021-06-02 10:28:50 +0100295 UI:
Primiano Tuccice51d522021-06-03 14:57:45 +0100296 * Fixed ADB connection issues ("unable to reset device") on Windows and Mac.
Primiano Tucci50199ce2021-07-02 14:50:53 +0100297 * Added caching of tracing in the cache storage so that the trace is
298 re-opened if a tab is killed (Chrome tab discarding or accidental CTRL+W).
Primiano Tucci5f303142021-06-02 10:28:50 +0100299 SDK:
Sami Kyostilac687c2e2021-06-03 13:00:45 +0100300 * Added support for writing track events using custom clock timestamps.
Primiano Tucci5f303142021-06-02 10:28:50 +0100301
302
Primiano Tucci5ca51f92021-06-08 10:29:35 +0100303v16.1 - 2021-06-08:
304 Tracing service and probes:
305 * Cherry-pick of r.android.com/1716718 which missed the v16 branch cut and
306 fixed MSVC 2019 builds.
307
308
Primiano Tucci5f303142021-06-02 10:28:50 +0100309v16.0 - 2021-06-01:
310 Tracing service and probes:
Primiano Tucci235610f2021-05-24 20:22:43 +0100311 * Added support for building most targets (including traced, SDK and
312 trace_processor_shell) from Windows using either clang-cl or MSVC 2019.
313 * Added tracebox, a monolithic binary to capture traces with one command
314 on Linux and older versions of Android (tested on Android Oreo).
Primiano Tucci5f303142021-06-02 10:28:50 +0100315 * Added support for service-side field-level filtering of traces. The
316 consumer can pass a filter bytecode and ensure that non-allowed fields
317 are never emitted in output.
318 * Added reporting of service version and producer SDK version into the trace
319 and `perfetto --query`.
320 * Fixed compatibility with Android versions older than Pie (for sideloading)
321 which cause failures when trying to enable atrace categories.
Primiano Tucci96755912021-01-05 12:15:17 +0100322 Trace Processor:
Primiano Tucci5f303142021-06-02 10:28:50 +0100323 * Added new RPC interface based on a bidirectional binary pipe. This allows
324 to simplify integration with out-of-process users. The existing --httpd
325 interface now exposes a single /rpc endpoint. Older endpoints are still
326 available for legacy clients.
327 * Added support for counters and instant events in JSON traces.
328 * Fixed support of displayTimeUnit in JSON traces.
Primiano Tuccie60b7c82021-03-03 14:09:35 +0000329 UI:
Primiano Tucci41327402021-06-01 20:28:00 +0100330 * Added warning dialog when trying to use a trace_processor_shell --httpd
331 which is too old.
332 * Added warning dialog when trying to use a trace_processor_shell --httpd
333 RPC instance from more than one tab.
Primiano Tucci5f303142021-06-02 10:28:50 +0100334 * Added links to convert the trace to JSON or systrace directly from the UI.
335 * Changed track sorting logic. Tracks are now sorted in groups (e.g.,
336 scheduling tracks, summary tracks, frame timeline tracks).
337 * Fixed crashes happening flakily when pushing traces via window.open().
Primiano Tucci8220de22021-05-05 09:53:37 +0100338
339
340v15.0 - 2021-05-05:
341 Tracing service and probes:
342 * Added support for {host,target}=aarch64 standalone builds.
343 * Added --background cmdline switch to traced and traced_probes services.
344 * Changed trigger_perfetto to ignore unknown command line arguments to
345 preserve forward compatibility.
346 * Added -a / --app cmdline argument to tools/record_android_trace.
347 Trace Processor:
348 * Added sanitisation of keys in nested debug annotation dictionaries.
349 * Changed Android startup metric: count CPU time of JIT thread pool, report
350 timestamp of activities during startup.
351 * Changed android_surfaceflinger metric, added missed frame counters.
352 * Changed version of SQLite to 3.35.4.
353 * Fixed importing of JSON traces with decimal (sub-us) timestamp.
354 * Fixed prepending "debug." prefix to debug annotations with non-interned
355 names.
356 UI:
357 * Added support to visualize the lifetime of individual dmabuf allocations
358 as async slices (datasource: already existing ftrace dmabuf event).
359 * Fixed visualization of unfinished slices to extend to the end of the
360 viewport.
361 SDK:
Alexander Timin129bdcf2021-04-16 11:36:37 +0000362 * Added support for passing arbitrary number of debug annotations to
363 TRACE_EVENT and combining them with lambdas.
364 * Added support for writing typed TrackEvent arguments using TRACE_EVENT
365 inline without lambdas.
Primiano Tucci8220de22021-05-05 09:53:37 +0100366 * Changed ConvertTimestampToTraceTimeNs to be a member of
367 TraceTimestampTraits<T> struct instead of a standalone function.
368 * Changed TracedValue to use nested DebugAnnotation proto instead of
369 DebugAnnotation::NestedValue.
Primiano Tucci7454e1a2021-04-01 13:03:19 +0100370
371
372v14.0 - 2021-04-01:
373 Tracing service and probes:
374 * Added support for polling power rails on Android from the newer
375 IPowerStats AIDL interface (previously using only the HAL interface).
376 * Fixed native heap profiler crash when ABI of heapprofd and profiled
377 process mismatch.
378 * Changed encoding format of Anroid managed heap profiler to reduce heap
379 dump sizes by delta-encoding object IDs.
380 Trace Processor:
381 * Added activity create/resume, layout inflation and resource timings to
382 the Android startup metric.
383 * Added chrome metadata key/value pairs (e.g. chrome version) into the
384 `metadata` table with 'cr-' prefixed keys.
385 * Added dma-buf-based memory metrics reporting total/avg/min/max dmabuf
386 allocation per-dmabuf-heap and per-process.
387 * Removed |force_full_sort| flag from config. This has been replaced
388 by setting the sorting mode to force a full sort.
389 UI:
390 * Added tools/symbolize-ui-crash script to resolve crash reports via
391 TypeScript source maps.
392 * Fixed newlines when copying Android event log lines into the clipboard.
393 * Fixed crash when selecting "Did not finish" slices.
394 * Fixed OOM dialog to give actionable instructions when opening large traces
395 rather than suggesting to file a bug.
Sami Kyostilaedf7c862021-03-11 13:33:35 +0000396 SDK:
Primiano Tucci7454e1a2021-04-01 13:03:19 +0100397 * Added /meson.build for bundling /sdk/perfetto.{cc,h} in Meson builds.
398 * Added support for counter trace points with the TRACE_COUNTER macro.
399
Primiano Tuccie60b7c82021-03-03 14:09:35 +0000400
401v13.0 - 2021-03-01:
402 Tracing service and probes:
403 * Added ability to sample callstacks using kernel tracepoints as timebase.
404 * Added abililty to record the perf timebase counter values into the trace,
405 both combined callstack+counter or counter-only.
406 * Added abillity to trigger traces based on VM pressure on Android. Requires
407 a dedicated tracing instance in $tracefs/instances/mm_events.
408 Trace Processor:
Lalit Maganti88eb6982021-03-01 14:28:51 +0000409 * Added sorting mode to trace processor config to specify how trace
410 processor should sort events. The |force_full_sort| flag has been
411 deprecated (with replacement) and will be removed in the next version.
Primiano Tuccie60b7c82021-03-03 14:09:35 +0000412 * Added ingestion of frame timeline events into the
413 {expected,actual}_frame_timeline_slice tables.
414 * Added support for Mali's trace_marker_write ftrace event.
415 * Added memory metric based on newer android_fastrpc kernel events.
Primiano Tucci96755912021-01-05 12:15:17 +0100416 UI:
Primiano Tuccie60b7c82021-03-03 14:09:35 +0000417 * Added flow events support for instant events and async tracks.
418 * Added support for Android frame timeline events. They allow inspecting
419 end-to-end expected vs actual app-to-surfaceflinger frame times.
420 * Added ability to switch between Canary and Stable channels in the UI.
421 * Added ability to drag&drop to open trace files.
422 * Changed UI serving infrastructure, old ui versions can be now retrieved by
423 directly opening https://ui.perfetto.dev/v12.1.269/ .
424 * Removed thread state track for threads that have no activity.
Sami Kyostilae8c0ff52021-02-16 11:26:16 +0000425 SDK:
426 * Use process start time hashed with the process id as a unique process
427 identifier, allowing multiple independent users of the SDK in the same
428 process to interleave their events on shared tracks.
Sami Kyostila86b10c52021-02-16 16:50:42 +0000429 * Record process and thread names into the trace.
Sami Kyostila67cdc662021-02-26 16:42:14 +0000430 * Add ring buffer tracing support, i.e., periodic clearing of incremental
431 state.
Primiano Tuccie60b7c82021-03-03 14:09:35 +0000432 Misc:
433 * Convert python scripts to python3.
Primiano Tucci96755912021-01-05 12:15:17 +0100434
435
Primiano Tucci71a92392021-02-01 23:45:28 +0100436v12.1 - 2021-02-01:
437 Misc:
438 * Fixed CHANGELOG which was missed in the 12.0 branch cut, causing
439 mis-labeling of the version code in the v12.x branch as v11.0..N
440
441
Primiano Tucci9c294a42021-02-01 18:04:23 +0100442v12.0 - 2021-02-01:
443 Tracing service and probes:
444 * Added more helpful error messages if the client library is used without
445 having been initialized.
446 * Added //tools/record_android_trace script to facilitate recording traces
447 from Android devices, automating start + stop-via-ctrl+c + pull + open.
448 * Added auto-attachment of traces to Android bugreports if dumpstate is
449 invoked when a trace with bugreport_score > 0 is running.
450 SDK:
451 * Added ability to customize the timestamp of events via
452 ConvertTimestampToTraceTimeNs().
453 * Fixed support for category names that contain a space.
454 Trace Processor:
455 * Added ingestion and query support for Android end-to-end frame timing
456 events through the {actual, expected}_frame_timeline_slice tables.
457 * Added time-to-reportFullyDrawn (Android's API) to startup metrics.
458 * Fixed excessive memory usage when decoding traces containing callstacks
459 (https://github.com/google/perfetto/issues/83).
460 UI:
461 * Added ability to inspect the full trace config string from the
462 'Info and stats' page.
463 * Fixed 'TABLE/VIEW XXX already exists' in the Metrics page when running the
464 same metric twice.
465 * Fixed sorting of tracks using numeric sorting instead of lexicographic:
466 Thread {1, 2, 10, 11, 20} rather than Thread {1, 10, 11, 2, 20}.
467 * Fixed CSP-related bug that was preventing the UI to work on Firefox.
468 * Changed max zoom resolution to allow to zoom to sub-us events.
469
470
Primiano Tucci96755912021-01-05 12:15:17 +0100471v11.0 - 2021-01-01:
472 Tracing service and probes:
Sami Kyostilaae504d42020-12-02 12:00:25 +0000473 * Added trace packet interceptor API for rerouting trace data into
474 non-Perfetto systems.
Sami Kyostila6c151262020-12-15 18:48:51 +0000475 * Added support for printing track events to the console.
Sami Kyostila2778ac82020-12-21 16:12:27 +0000476 * Added a way to observe track event tracing sessions starting and
477 stopping.
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000478 Trace Processor:
Primiano Tucci96755912021-01-05 12:15:17 +0100479 * Added "ancestor_slice" and "experimental_ancestor_stack_profile_callsite"
480 table functions to look up ancestors of CPU stack samples in profiler
481 tables.
482 * Added power metric reporting suspend/resume time periods.
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000483 UI:
Primiano Tucci96755912021-01-05 12:15:17 +0100484 * Fixed CPU time calculation in example queries.
485 * Added tracks to debug Android SystemUI jank.
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000486
Primiano Tucci5d2be3a2020-12-01 20:42:45 +0100487
488v10.0 - 2020-12-01:
489 Tracing service and probes:
490 * Fixed crash of tracing service if a client is unresponsive on the IPC
491 channel. Clients are disconnected if they don't respond to IPCs for 10s.
492 * Added cmdline arguments for integration within ChromeOS system image
493 (--{producer,consumer}-socket-{group,mode} for chmod-ing sockets).
494 * Changed path lookup logic for traced socket. /run/perfetto/ is used if the
495 directory exists, falling back on /tmp/ otherwise.
496 * Added support for kernel frame symbolization to the traced_perf callstack
497 sampler.
498 * Added support for resolving ftrace event arguments that require
499 symbolization against printk_format.
500 Trace Processor:
501 * Added .read command to inject a SQL query file, similar to the -q cmdline.
502 * Added trace-based metrics to root cause jank in Android System UI.
503 * Added symbolization support for ELF files on Windows for heap and
504 callstack profilers.
505 * Added support for symbolizing names of workqueue ftrace events.
506 * Improved Android startup metric with activity restart time.
507 UI:
508 * Added support for navigating flows with Ctrl+[ / Ctr+].
509 * Improved query result panel, moved to the bottom group allowing
510 simultaneous query result and timeline views.
511 * Fixed data corruption when recording traces via the WebUSB-based Record
512 page in the UI.
513
514
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000515v9.0 - 2020-11-01:
516 Tracing service and probes:
Sami Kyostilaf99230f2020-10-15 10:38:32 +0000517 * Added support for recording traces from a system service through the
518 client API.
519 * The client library now reconnects producers automatically if the
520 connection to the tracing service is lost. Also fixed crashes in ongoing
521 tracing sessions when a disconnect occurs.
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000522 * Added support for dpu and g2d ftrace events.
523 * Enabled commit batching and producer side patching of chunks.
524 * Add support for symbolizing kernel symbols for ftrace events.
Primiano Tucci2ab19f62020-07-01 21:28:31 +0100525 Trace Processor:
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000526 * Fixed type affinity of string columns.
Primiano Tucci2ab19f62020-07-01 21:28:31 +0100527 UI:
Lalit Maganti09549602020-10-01 16:47:00 +0100528 * Added initial support for running metrics from the UI.
Isabelle Taylor8546cee2020-10-30 14:43:53 +0000529 * Added support for displaying all flows when a slice or area is selected.
530 * Highlight nodes that match the 'focus' string in the flamegraph.
531 * Added search within slice args.
532 * Fixed details panel height and moved query panel into details panel.
533 * Enabled re-sharing of postMessage traces by echoing back the original URL.
534 * Improved record page error messages.
Lalit Maganti09549602020-10-01 16:47:00 +0100535
536
537v8.0 - 2020-10-01:
538 Tracing service and probes:
539 * Added API for querying registered data sources and their capabilities.
540 * Added support for profiling heap allocations on Linux via LD_PRELOAD.
541 * Fixed possible race when initializing the consumer library.
542 * Fixed subtle bugs on systems with 16KB system pages.
543 Trace Processor:
544 * Added a table which lists available metrics.
545 * Added Python bindings on PyPi in the 'perfetto' package.
546 * Added support for running trace_processor_shell on Android.
547 * Added per-process metrics for GPU memory usage.
548 * Added support for exporting flow events to JSON.
549 * Added dynamic tables for navigating between slices of flows.
550 UI:
551 * Changed time marking: horizontal selection doesn't gray out anymore,
552 pressing 'm' marks the range.
553 * Added initial support for displaying flow event arrows.
554 * Improved ordering of all thread tracks under process grouping.
555 * Fixed UI crashes due to metric errors
556 * Fixed selection of thread state slices.
Primiano Tucci2ab19f62020-07-01 21:28:31 +0100557
558
Primiano Tucci816506e2020-09-01 18:13:12 +0200559v7.0 - 2020-09-01:
560 Tracing service and probes:
561 * Added auto-reconnection to the SDK. Tracing::Initialize() now retries in
562 the background, instead of failing, if the tracing service is unrechable.
563 * Added support for recording cpuhp (CPU hotplug) ftrace events.
564 * Fixed heap profiling unwinding on multi-ABI systems.
565 * Fixed reporting of live objects in the native heap profiler when using
566 --dump-at-max.
567 * Fixed crash when writing trace events with field nesting level > 10.
568 Trace Processor:
569 * Added Python bindings, see
570 https://perfetto.dev/docs/analysis/trace-processor#python-api .
571 * Added ingestion for Chrome instant events and Chrome flow events.
572 * Added ingestion for Android GPU memory events and sched_blocked_reason.
573 * Added WebView power metric.
574 * Added support for WSL1 where Async I/O is not available.
575 * Improved detection of Android suspend/resume events.
576 UI:
577 * Added GPU memory recording controls and ingestion code. Requires a recent
578 Android 12+ kernel.
579 * Added details panel for flow events, showed when the user selects a slice
580 involved in a flow (arrows in the UI are still being worked on).
581 * Added instant events rendering.
582 * Added Google Analytics.
583 * Fixed I/O thread-states in 4.14 kernels to deal with the removal of
584 wake-kill using sched_blocked_reason.
585 * Fixed "Perfetto UI started debugging this browser" showing when opening
586 the UI and the Chrome extension is installed.
587 Misc:
588 * Update language to comply with Android's inclusive language guidance.
589
590
Primiano Tucci6d7badc2020-07-31 19:03:27 +0200591v6.0 - 2020-08-01:
592 Tracing service and probes:
593 * Added ftrace thermal events.
594 * Added support for custom allocators to the heap profiler. Allows
595 developers to report memory allocations that are not done through malloc.
596 * Added detailed timestamping of key tracing session events.
597 * Added support for building tracing services on CrOS (system-wide tracing).
598 * Fixed filtering out of stale ftrace data that predates the beginning of
599 the tracing session.
600 Trace Processor:
601 * Improved profile symbolizer. PERFETTO_SYMBOLIZER_MODE=index discovers
602 symbol files by build id rather than name.
603 * Added screen-state Android metrics.
604 UI:
605 * Added 'Info and stats' page to debug data losses and trace stats.
606 * Added full cmdline to process detail panel.
607 * Improved performance of async tracks using quantized queries.
608 * Improved performance of counter and slice tracks for long traces by
609 pre-caching quantized track data.
610 * Improved actionablility of crash dialog when the Wasm module OOMs.
611
612
Primiano Tucci2ab19f62020-07-01 21:28:31 +0100613v5.0 - 2020-07-01:
614 Tracing service and probes:
615 * Added gpu_mem_total ftrace event.
616 * Added TrustZone (scm start/end) event.
617 * Added protos for GPU memory tracking and updated render stages proto.
618 * Added time_in_state probe for Android (CPU time broken down by frequency).
619
620 Trace Processor:
621 * Added ingestion of IRQ and SoftIRQ events.
622 * Added ingestion of workqueue events. KAddr symbolization still missing.
623 * Added ingestion of voltage regulators and board clock change events.
624 * Added ingestion of new ION ion_buffer_create/destroy events.
625 * Added ingestion of TrustZone (scm start/end) events.
626 * Added SurfaceFlinger derived events (tracking of missed frames).
627 * Changed parsing of scheduler task state on 4.14 kernels.
628 * Changed importing of Java heap graphs: allow partial dumps.
629 * Improved performance of the SQL query engine.
630
631 UI:
632 * Added dedicated query page for custom SQL queries.
633 * Added navigation links for Binder slices.
634 * Removed overview summary mode when zoomed out.
635 * Fixed recording page when targeting Android P.
636 * Improved slice pan/zoom performance by quantizing.