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