Ryan Savitski | a7dccea | 2022-05-10 22:21:47 +0100 | [diff] [blame] | 1 | Unreleased: |
Primiano Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 2 | Tracing service and probes: |
Daniele Di Proietto | 44a77fc | 2024-10-24 18:12:52 +0000 | [diff] [blame] | 3 | * Add `--clone-by-name` to the perfetto command line. This allows cloning a |
| 4 | tracing session by its unique_session_name. |
Daniele Di Proietto | eae417b | 2024-10-11 12:23:03 +0000 | [diff] [blame] | 5 | SQL Standard library: |
Lalit Maganti | 036895c | 2024-10-18 12:13:22 +0100 | [diff] [blame] | 6 | * 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 Maganti | d61e77b | 2024-10-21 05:05:36 -0700 | [diff] [blame] | 12 | * 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 Maganti | 145dc82 | 2024-10-21 05:18:56 -0700 | [diff] [blame] | 17 | * 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 Maganti | 036895c | 2024-10-18 12:13:22 +0100 | [diff] [blame] | 23 | * Removed the `uid_counter_track` table. It was redundant as no data was |
| 24 | inserted directly into it. |
Lalit Maganti | d61e77b | 2024-10-21 05:05:36 -0700 | [diff] [blame] | 25 | * Removed the `uid_track` table. It was redundant as no data was |
| 26 | inserted directly into it. |
Anna Mayzner | 8d4918c | 2024-11-11 11:28:25 +0000 | [diff] [blame] | 27 | * 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 Proietto | eae417b | 2024-10-11 12:23:03 +0000 | [diff] [blame] | 31 | Trace Processor: |
| 32 | * |
| 33 | UI: |
| 34 | * |
| 35 | SDK: |
| 36 | * |
| 37 | |
| 38 | |
Daniele Di Proietto | 21f9bd9 | 2024-10-14 16:03:30 +0000 | [diff] [blame] | 39 | v48.1 - 2024-10-14: |
| 40 | SDK: |
| 41 | * Fix build with MSVC. |
| 42 | |
| 43 | |
Daniele Di Proietto | eae417b | 2024-10-11 12:23:03 +0000 | [diff] [blame] | 44 | v48.0 - 2024-10-11: |
| 45 | Tracing service and probes: |
Ryan Savitski | 63ce251 | 2024-08-19 15:47:21 +0100 | [diff] [blame] | 46 | * 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 Maganti | d2eee5d | 2024-09-11 13:24:06 +0100 | [diff] [blame] | 49 | * Increased watchdog timeout to 180s from 30s to make watchdog crashes |
| 50 | much less likely when system is under heavy load. |
Anna Mayzner | b0feb77 | 2024-05-17 07:27:16 +0000 | [diff] [blame] | 51 | SQL Standard library: |
Anna Mayzner | 103cc40 | 2024-10-07 15:19:20 +0000 | [diff] [blame] | 52 | * 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 Maganti | cf23a8e | 2024-10-08 10:28:09 +0100 | [diff] [blame] | 57 | * 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 Proietto | a853000 | 2024-08-07 11:19:49 +0000 | [diff] [blame] | 61 | Trace Processor: |
Lalit Maganti | 0044e3c | 2024-10-09 14:27:37 +0100 | [diff] [blame] | 62 | * 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 Maganti | cf23a8e | 2024-10-08 10:28:09 +0100 | [diff] [blame] | 70 | * 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. |
| 73 | u * Renamed Trace Processor's C++ method `RegisterSqlModule()` to |
Anna Mayzner | 103cc40 | 2024-10-07 15:19:20 +0000 | [diff] [blame] | 74 | `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 Proietto | a853000 | 2024-08-07 11:19:49 +0000 | [diff] [blame] | 79 | UI: |
Ryan Savitski | b124a04 | 2024-09-30 13:19:02 +0100 | [diff] [blame] | 80 | * 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 Golton | 5849a82 | 2024-10-08 08:41:54 +0100 | [diff] [blame] | 86 | * 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 Proietto | a853000 | 2024-08-07 11:19:49 +0000 | [diff] [blame] | 108 | SDK: |
| 109 | * |
| 110 | |
| 111 | |
| 112 | v47.0 - 2024-08-07: |
| 113 | SQL Standard library: |
Lalit Maganti | da1ccee | 2024-06-20 14:23:23 +0100 | [diff] [blame] | 114 | * 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 Maganti | a1aa994 | 2024-06-21 11:47:53 +0100 | [diff] [blame] | 118 | * 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 Maganti | 7ae5c74 | 2024-06-21 11:48:22 +0100 | [diff] [blame] | 121 | * 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 Maganti | 154a7a6 | 2024-06-21 13:29:18 +0100 | [diff] [blame] | 124 | * Moved `gpu.frequency` to `android.gpu.frequency` for the same reason as |
| 125 | above. |
Lalit Maganti | c04191b | 2024-07-27 20:34:25 +0100 | [diff] [blame] | 126 | * 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 Maganti | 6715e76 | 2024-06-21 13:25:16 +0100 | [diff] [blame] | 130 | * 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 Maganti | 28092f8 | 2024-06-21 13:18:41 +0100 | [diff] [blame] | 136 | * Moved `memory.heap_graph_dominator_tree` to |
Lalit Maganti | 6715e76 | 2024-06-21 13:25:16 +0100 | [diff] [blame] | 137 | `android.memory.heap_graph.dominator_tree`. This is to allow for the |
Lalit Maganti | 28092f8 | 2024-06-21 13:18:41 +0100 | [diff] [blame] | 138 | addition of more modules related to heap graphs. |
Anna Mayzner | d3e5227 | 2024-07-29 07:20:46 +0000 | [diff] [blame] | 139 | * Added `linux_kernel_threads` table to `linux.threads` module. |
Daniele Di Proietto | 7114ea5 | 2024-06-13 15:45:00 +0000 | [diff] [blame] | 140 | Trace Processor: |
Lalit Maganti | 1e10193 | 2024-07-26 15:17:06 +0100 | [diff] [blame] | 141 | * 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 Mayzner | 9ee8c1e | 2024-06-24 16:44:51 +0000 | [diff] [blame] | 144 | * Added `CREATE PERFETTO INDEX` to add sqlite-like indexes to Perfetto |
| 145 | tables. Has the same API as `CREATE INDEX`. |
Daniele Di Proietto | 7114ea5 | 2024-06-13 15:45:00 +0000 | [diff] [blame] | 146 | UI: |
Steve Golton | cc2c901 | 2024-08-06 13:08:15 +0100 | [diff] [blame] | 147 | * 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 Proietto | 7114ea5 | 2024-06-13 15:45:00 +0000 | [diff] [blame] | 177 | |
| 178 | |
| 179 | v46.0 - 2024-06-13: |
| 180 | SQL Standard library: |
Anna Mayzner | b0feb77 | 2024-05-17 07:27:16 +0000 | [diff] [blame] | 181 | * Added megacycles support to CPU package. Added tables: |
| 182 | `cpu_cycles_per_process`, `cpu_cycles_per_thread` and |
| 183 | `cpu_cycles_per_cpu`. |
Anna Mayzner | 8b1d50a | 2024-05-24 10:00:18 +0000 | [diff] [blame] | 184 | * 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 Mayzner | b0feb77 | 2024-05-17 07:27:16 +0000 | [diff] [blame] | 187 | * Migrated `sched.utilization` package to `cpu.utilization`. |
Daniele Di Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 188 | Trace Processor: |
Anna Mayzner | 6b9b91e | 2024-05-15 12:01:33 +0000 | [diff] [blame] | 189 | * Added "time to initial display" and "time to full display" metrics to |
| 190 | the Android startup metric. |
Daniele Di Proietto | 15a193e | 2024-05-09 14:26:57 +0000 | [diff] [blame] | 191 | UI: |
Daniele Di Proietto | 7114ea5 | 2024-06-13 15:45:00 +0000 | [diff] [blame] | 192 | * Added plugin for synchronizing two instances of the UI - search for |
Steve Golton | aae0e23 | 2024-06-04 14:02:23 +0100 | [diff] [blame] | 193 | '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 Proietto | 15a193e | 2024-05-09 14:26:57 +0000 | [diff] [blame] | 197 | SDK: |
Etienne Pierre-doray | 941d0d3 | 2024-05-21 12:37:23 +0000 | [diff] [blame] | 198 | * 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 Proietto | 15a193e | 2024-05-09 14:26:57 +0000 | [diff] [blame] | 202 | |
| 203 | |
| 204 | v45.0 - 2024-05-09: |
| 205 | Trace Processor: |
Anna Mayzner | 5586074 | 2024-05-08 13:37:42 +0000 | [diff] [blame] | 206 | * Optimised single column `DISTINCT` queries. |
| 207 | * Optimised `LIMIT` and `OFFSET` queries. |
Anna Mayzner | f119e5a | 2024-05-01 10:47:32 +0000 | [diff] [blame] | 208 | 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 Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 216 | UI: |
Steve Golton | 6aaa8a1 | 2024-04-30 10:16:40 +0100 | [diff] [blame] | 217 | * 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 Proietto | 54aec28 | 2024-04-08 14:24:17 +0000 | [diff] [blame] | 229 | SDK: |
Daniele Di Proietto | bcb9d22 | 2024-03-21 18:52:56 +0000 | [diff] [blame] | 230 | * 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 Proietto | 54aec28 | 2024-04-08 14:24:17 +0000 | [diff] [blame] | 237 | |
| 238 | |
| 239 | v44.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 Tucci | 272ffb0 | 2024-03-12 20:03:10 +0000 | [diff] [blame] | 244 | * 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 Savitski | 44c7cc2 | 2024-03-19 02:38:41 +0000 | [diff] [blame] | 246 | * 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 Proietto | 54aec28 | 2024-04-08 14:24:17 +0000 | [diff] [blame] | 251 | * 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 Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 264 | SDK: |
Daniele Di Proietto | b81ac52 | 2024-03-19 14:44:52 +0000 | [diff] [blame] | 265 | * "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 Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 270 | |
| 271 | |
Daniele Di Proietto | f954364 | 2024-03-07 17:18:41 +0000 | [diff] [blame] | 272 | v43.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 Proietto | 78cf90e | 2024-03-05 17:03:03 +0000 | [diff] [blame] | 278 | v43.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 Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 284 | v43.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 Savitski | 39108cf | 2024-03-04 13:40:56 +0000 | [diff] [blame] | 295 | * "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 Proietto | 81bf7ab | 2024-02-01 13:32:57 +0000 | [diff] [blame] | 299 | Trace Processor: |
Daniele Di Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 300 | * Added `decompress_packets` mode to the traceconv tool. |
Daniele Di Proietto | 956b18d | 2024-02-26 17:24:00 +0000 | [diff] [blame] | 301 | * Support memory mapped file access on Windows. |
Daniele Di Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 302 | * 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 Proietto | 81bf7ab | 2024-02-01 13:32:57 +0000 | [diff] [blame] | 305 | UI: |
Daniele Di Proietto | 173d60b | 2024-02-21 15:29:19 +0000 | [diff] [blame] | 306 | * 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 Proietto | 81bf7ab | 2024-02-01 13:32:57 +0000 | [diff] [blame] | 329 | |
| 330 | |
| 331 | v42.0 - 2024-02-02: |
| 332 | Tracing service and probes: |
Ryan Savitski | 983f90b | 2024-01-16 16:10:59 +0000 | [diff] [blame] | 333 | * 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 Proietto | 5b5ae0b | 2023-11-15 16:16:28 +0000 | [diff] [blame] | 336 | UI: |
Primiano Tucci | 77c4ccd | 2024-01-16 16:33:14 +0000 | [diff] [blame] | 337 | * 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 Proietto | 81bf7ab | 2024-02-01 13:32:57 +0000 | [diff] [blame] | 340 | * 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 Proietto | 5b5ae0b | 2023-11-15 16:16:28 +0000 | [diff] [blame] | 349 | SDK: |
Daniele Di Proietto | 81bf7ab | 2024-02-01 13:32:57 +0000 | [diff] [blame] | 350 | * 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 Maganti | e7b5ffb | 2024-01-02 17:10:27 +0000 | [diff] [blame] | 355 | |
| 356 | |
Daniele Di Proietto | 81bf7ab | 2024-02-01 13:32:57 +0000 | [diff] [blame] | 357 | v41.0 - 2024-01-11: |
Lalit Maganti | e7b5ffb | 2024-01-02 17:10:27 +0000 | [diff] [blame] | 358 | 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 Proietto | 01080e9 | 2023-12-01 18:59:14 +0000 | [diff] [blame] | 367 | * 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 Proietto | 5b5ae0b | 2023-11-15 16:16:28 +0000 | [diff] [blame] | 370 | |
| 371 | |
Lalit Maganti | 7514a69 | 2023-12-05 12:01:02 +0000 | [diff] [blame] | 372 | v40.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 Proietto | 5b5ae0b | 2023-11-15 16:16:28 +0000 | [diff] [blame] | 383 | v39.0 - 2023-11-15: |
| 384 | Tracing service and probes: |
Primiano Tucci | fe6137c | 2023-10-17 12:06:34 +0100 | [diff] [blame] | 385 | * Added reporting of TZ offset under system_info.timezone_off_mins . |
Primiano Tucci | 89eb324 | 2023-10-31 16:13:04 +0000 | [diff] [blame] | 386 | * 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 Tucci | 0b3de74 | 2023-11-09 22:55:33 +0000 | [diff] [blame] | 389 | * Added support for running on Linux & Android systems configured with 16K |
| 390 | pagetables. |
Daniele Di Proietto | 2789b5b | 2023-04-14 09:53:03 +0000 | [diff] [blame] | 391 | Trace Processor: |
Lalit Maganti | 7514a69 | 2023-12-05 12:01:02 +0000 | [diff] [blame] | 392 | * Added android_boot metric. |
Daniele Di Proietto | 5b5ae0b | 2023-11-15 16:16:28 +0000 | [diff] [blame] | 393 | * Added new PerfettoSQL syntax (CREATE PERFETTO VIEW) for adding schemas to views. |
Lalit Maganti | 7514a69 | 2023-12-05 12:01:02 +0000 | [diff] [blame] | 394 | * Added support for the perf.data import format. |
| 395 | * Added dvfs and cpu_idle to stdlib. |
Hector Dearman | 73bb5e2 | 2023-05-02 16:38:29 +0100 | [diff] [blame] | 396 | UI: |
Lalit Maganti | 7514a69 | 2023-12-05 12:01:02 +0000 | [diff] [blame] | 397 | * Added a new type of debug tracks: counter. |
Daniele Di Proietto | 5b5ae0b | 2023-11-15 16:16:28 +0000 | [diff] [blame] | 398 | * Improved visualization of timestamps for durations. |
Hector Dearman | 73bb5e2 | 2023-05-02 16:38:29 +0100 | [diff] [blame] | 399 | |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 400 | |
Lalit Maganti | b617783 | 2023-10-09 18:43:03 +0100 | [diff] [blame] | 401 | v38.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 Proietto | d2482cf | 2023-08-10 13:55:01 +0000 | [diff] [blame] | 424 | v37.0 - 2023-08-10: |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 425 | 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 Proietto | d2482cf | 2023-08-10 13:55:01 +0000 | [diff] [blame] | 430 | SDK: |
| 431 | * Fix build with MSVC. |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 432 | 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 Proietto | d2482cf | 2023-08-10 13:55:01 +0000 | [diff] [blame] | 444 | |
Harkiran Bolaria | 8c8b0a8 | 2023-07-06 14:26:13 +0000 | [diff] [blame] | 445 | v36.1 - 2023-07-06: |
| 446 | Trace Processor: |
| 447 | * Fix compile on Windows. |
| 448 | |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 449 | |
Lalit Maganti | 72dc31f | 2023-07-05 17:19:42 +0100 | [diff] [blame] | 450 | v36.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 Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 465 | |
Hector Dearman | a041351 | 2023-06-07 21:22:26 +0100 | [diff] [blame] | 466 | v35.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 Dearman | 73bb5e2 | 2023-05-02 16:38:29 +0100 | [diff] [blame] | 484 | v34.0 - 2023-05-02: |
| 485 | Tracing service and probes: |
Daniele Di Proietto | 89111ad | 2023-03-14 11:57:01 +0000 | [diff] [blame] | 486 | * --continuous-dump in tools/java_heap_dump now keeps recording until it |
| 487 | receives CTRL+C. |
Primiano Tucci | 8146d0b | 2023-05-02 21:56:49 +0100 | [diff] [blame] | 488 | * Add CLONE_SNAPSHOT triggers for non-destructive snapshots of the trace |
| 489 | buffer without tracing interruption. |
Daniele Di Proietto | c24118a | 2023-02-01 13:49:41 +0000 | [diff] [blame] | 490 | UI: |
Hector Dearman | 73bb5e2 | 2023-05-02 16:38:29 +0100 | [diff] [blame] | 491 | * 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 Proietto | c24118a | 2023-02-01 13:49:41 +0000 | [diff] [blame] | 494 | SDK: |
Hector Dearman | 2f174a5 | 2023-03-21 15:21:54 +0000 | [diff] [blame] | 495 | * 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 Proietto | 93a232a | 2023-04-17 10:03:08 +0000 | [diff] [blame] | 504 | * The new DataSourceBase::OnFlush() method allows users to properly handle |
| 505 | Flush requests. |
Lalit Maganti | 51eba12 | 2023-03-02 13:52:08 +0000 | [diff] [blame] | 506 | |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 507 | |
Hector Dearman | 320af65 | 2023-05-02 17:20:52 +0100 | [diff] [blame] | 508 | v33.1 - 2023-03-03: |
| 509 | Identical to v33.0. Version was bumped to work around prebuilt infra failures. |
| 510 | |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 511 | |
Lalit Maganti | 51eba12 | 2023-03-02 13:52:08 +0000 | [diff] [blame] | 512 | v33.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 Proietto | 73c07ed | 2023-02-17 15:04:31 +0000 | [diff] [blame] | 517 | * Tracing::Initialize() can be called more than once to initialize different |
| 518 | backends separately. |
Lalit Maganti | 51eba12 | 2023-03-02 13:52:08 +0000 | [diff] [blame] | 519 | * Reduce binary size impact of autogenerated code. |
Daniele Di Proietto | c24118a | 2023-02-01 13:49:41 +0000 | [diff] [blame] | 520 | |
Primiano Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 521 | |
Daniele Di Proietto | 722ff23 | 2023-02-13 17:04:42 +0000 | [diff] [blame] | 522 | v32.2 - 2023-02-16: |
| 523 | SDK: |
| 524 | * Fix MSVC warnings. |
| 525 | |
| 526 | |
Daniele Di Proietto | 5df28fc | 2023-02-01 15:42:18 +0000 | [diff] [blame] | 527 | v32.1 - 2023-02-01: |
| 528 | Trace Processor: |
| 529 | * Fix build on windows. |
| 530 | |
| 531 | |
Daniele Di Proietto | 9eccbc4 | 2023-02-01 13:55:40 +0000 | [diff] [blame] | 532 | v32.0 - 2023-02-01: |
Daniele Di Proietto | c24118a | 2023-02-01 13:49:41 +0000 | [diff] [blame] | 533 | Tracing service and probes: |
Primiano Tucci | 7c327c2 | 2022-11-23 12:24:49 +0000 | [diff] [blame] | 534 | * Added an explicit TraceUuid packet. The tracing service now always |
| 535 | generates a UUID, even if TraceConfig.trace_uuid_msb/lsb is empty. |
Primiano Tucci | 0a35742 | 2022-08-02 16:19:23 +0100 | [diff] [blame] | 536 | Trace Processor: |
Lalit Maganti | 966175c | 2022-10-05 18:20:52 +0100 | [diff] [blame] | 537 | * |
Primiano Tucci | 0a35742 | 2022-08-02 16:19:23 +0100 | [diff] [blame] | 538 | UI: |
| 539 | * |
| 540 | SDK: |
Daniele Di Proietto | 55fd4db | 2022-11-15 13:44:14 +0000 | [diff] [blame] | 541 | * Add perfetto::Tracing::ActivateTriggers() function. |
Sami Kyöstilä | 6020a92 | 2023-01-17 16:18:33 +1100 | [diff] [blame] | 542 | * 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 Proietto | 04073f6 | 2022-12-14 13:20:10 +0000 | [diff] [blame] | 549 | * Added TracingInitArgs::enable_system_consumer configuration option, that |
| 550 | allows the linker to discard the consumer IPC, if not required. |
Lalit Maganti | 9a32c28 | 2022-09-01 14:25:34 +0100 | [diff] [blame] | 551 | |
Lalit Maganti | 0207645 | 2022-10-05 18:24:06 +0100 | [diff] [blame] | 552 | |
Lalit Maganti | 2ed57ec | 2022-11-09 21:10:38 +0000 | [diff] [blame] | 553 | v31.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 Maganti | 966175c | 2022-10-05 18:20:52 +0100 | [diff] [blame] | 575 | v30.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 Maganti | 0207645 | 2022-10-05 18:24:06 +0100 | [diff] [blame] | 593 | * Add support for disallowing concurrent tracing sessions. |
| 594 | |
Lalit Maganti | 966175c | 2022-10-05 18:20:52 +0100 | [diff] [blame] | 595 | |
Lalit Maganti | ef0f60b | 2022-09-06 18:32:29 +0100 | [diff] [blame] | 596 | v29.0 - 2022-09-06: |
Lalit Maganti | 9a32c28 | 2022-09-01 14:25:34 +0100 | [diff] [blame] | 597 | 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 Maganti | ef0f60b | 2022-09-06 18:32:29 +0100 | [diff] [blame] | 601 | * Add support for parsing DSI ftrace events. |
Lalit Maganti | 9a32c28 | 2022-09-01 14:25:34 +0100 | [diff] [blame] | 602 | 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 Maganti | ef0f60b | 2022-09-06 18:32:29 +0100 | [diff] [blame] | 606 | * Upgraded SQLite to 3.39.2. |
Lalit Maganti | 9a32c28 | 2022-09-01 14:25:34 +0100 | [diff] [blame] | 607 | UI: |
| 608 | * Add support for searching Android log events. |
| 609 | * Group kernel wakelock tracks into a single track group. |
| 610 | SDK: |
Mohit Saini | 4c8dedf | 2022-08-02 18:16:28 +0100 | [diff] [blame] | 611 | * 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 Maganti | 9a32c28 | 2022-09-01 14:25:34 +0100 | [diff] [blame] | 616 | * Added the |first_packet_on_sequence| boolean which is set the first packet |
| 617 | emitted on each TraceWriter. |
Primiano Tucci | 0a35742 | 2022-08-02 16:19:23 +0100 | [diff] [blame] | 618 | |
| 619 | |
| 620 | v28.0 - 2022-08-02: |
| 621 | Tracing service and probes: |
Hector Dearman | 09db5b0 | 2022-07-11 13:35:23 +0100 | [diff] [blame] | 622 | * Add android.statsd datasource. |
Primiano Tucci | 4681b9e | 2022-07-21 15:05:37 +0100 | [diff] [blame] | 623 | * Removed log spam about sys.trace.traced_started in standalone builds. |
Primiano Tucci | bf7d490 | 2022-07-25 21:39:38 +0100 | [diff] [blame] | 624 | * 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 Proietto | fe9023f | 2022-07-19 15:33:28 +0100 | [diff] [blame] | 628 | * 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 Tucci | 0a35742 | 2022-08-02 16:19:23 +0100 | [diff] [blame] | 631 | * Fixed race condition in the daemonization path of perfetto --background. |
| 632 | It would cause daemonization failures if the TTY is destroyed immediately. |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 633 | Trace Processor: |
Anna Mayzner | c754888 | 2022-07-20 08:42:26 +0000 | [diff] [blame] | 634 | * Deprecate calling NotifyEndOfFile more than once: Flush should instead be |
| 635 | used for all but the final call. |
Primiano Tucci | 0a35742 | 2022-08-02 16:19:23 +0100 | [diff] [blame] | 636 | * Added ingestion and visualization of I2C transactions. |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 637 | UI: |
Primiano Tucci | 2ed5d3d | 2022-08-02 16:33:20 +0100 | [diff] [blame] | 638 | * Changed callstack sampling selection: selecting one sample now only shows |
| 639 | one stacktrace, selecting multiple samples shows the aggregation. |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 640 | SDK: |
Primiano Tucci | 94e94bb | 2022-07-26 20:19:30 +0100 | [diff] [blame] | 641 | * 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 Timin | 762b30b | 2022-08-01 16:40:56 +0000 | [diff] [blame] | 647 | * 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 Tucci | 0a35742 | 2022-08-02 16:19:23 +0100 | [diff] [blame] | 654 | * Added protozero::EnumToString() to convert enum keys to string literals. |
| 655 | |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 656 | |
Lalit Maganti | bed4b81 | 2022-07-14 13:48:41 +0100 | [diff] [blame] | 657 | v27.1 - 2022-07-11: |
| 658 | SDK: |
| 659 | * Added an API for shutting down Perfetto. |
| 660 | |
| 661 | |
Lalit Maganti | 3b522bc | 2022-07-01 15:16:23 +0100 | [diff] [blame] | 662 | v27.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 Mayzner | f119e5a | 2024-05-01 10:47:32 +0000 | [diff] [blame] | 673 | * |
Lalit Maganti | 3b522bc | 2022-07-01 15:16:23 +0100 | [diff] [blame] | 674 | |
| 675 | |
Lalit Maganti | cf78152 | 2022-06-13 17:13:25 +0100 | [diff] [blame] | 676 | v26.1 - 2022-06-13: |
| 677 | Trace Processor: |
| 678 | * Fixed build failures on Windows. |
| 679 | |
| 680 | |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 681 | v26.0 - 2022-06-13: |
| 682 | Tracing service and probes: |
Ryan Savitski | a7dccea | 2022-05-10 22:21:47 +0100 | [diff] [blame] | 683 | * 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 Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 688 | * 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 Tucci | 1c88943 | 2022-04-01 18:14:29 +0100 | [diff] [blame] | 694 | Trace Processor: |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 695 | * Added CREATE_VIEW_FUNCTION operator to define a SQL function that can |
| 696 | return a temporary table and yield multiple rows and columns. |
Ryan Savitski | a7dccea | 2022-05-10 22:21:47 +0100 | [diff] [blame] | 697 | * 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 Dearman | 6e4241d | 2022-05-07 22:37:34 +0100 | [diff] [blame] | 700 | * Added ABS_TIME_STR function which converts a trace timestamp to |
| 701 | an ISO8601 string. |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 702 | * Added ingestion for phase='R' events, used by performance.{now,mark}(). |
Hector Dearman | a9545e5 | 2022-05-17 12:23:25 +0100 | [diff] [blame] | 703 | * Changed 'trace_to_text' to be named 'traceconv'. The source |
| 704 | location also moved from 'tools/trace_to_text' to 'src/traceconv'. |
Primiano Tucci | 682a998 | 2022-05-20 17:13:28 +0100 | [diff] [blame] | 705 | * Changed compiler flags, added -mavx2. The previous patch in v22.0 was |
| 706 | supposed to add AVX2 support but added only AVX. |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 707 | * 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 Tucci | 1c88943 | 2022-04-01 18:14:29 +0100 | [diff] [blame] | 717 | UI: |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 718 | * Changed detail panel to separate slice args from generic slice properties. |
Anna Mayzner | f119e5a | 2024-05-01 10:47:32 +0000 | [diff] [blame] | 719 | * Automatically enabled sched_compact when generating trace configs for |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 720 | Android S+ targets. |
Primiano Tucci | 1c88943 | 2022-04-01 18:14:29 +0100 | [diff] [blame] | 721 | SDK: |
Primiano Tucci | 37a30c7 | 2022-06-13 14:37:50 +0100 | [diff] [blame] | 722 | * 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 Tucci | 1c88943 | 2022-04-01 18:14:29 +0100 | [diff] [blame] | 728 | |
| 729 | |
| 730 | v25.0 - 2022-04-01: |
| 731 | Tracing service and probes: |
Primiano Tucci | 06dab69 | 2022-03-15 15:32:33 +0000 | [diff] [blame] | 732 | * Added prebuilts for mac-arm64. |
Lalit Maganti | 8d6d7c1 | 2022-02-24 20:35:23 +0000 | [diff] [blame] | 733 | * Removed merged trace and config protos from Bazel. Embedder should |
| 734 | instead depend on the non-merged proto targets. |
Ryan Savitski | 3167ea0 | 2022-03-21 20:26:36 +0000 | [diff] [blame] | 735 | * 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 Tucci | 1c88943 | 2022-04-01 18:14:29 +0100 | [diff] [blame] | 738 | * 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 Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 742 | Trace Processor: |
Primiano Tucci | 06dab69 | 2022-03-15 15:32:33 +0000 | [diff] [blame] | 743 | * Added prebuilts for mac-arm64. |
Lalit Maganti | 68e649c | 2022-03-31 00:01:31 +0100 | [diff] [blame] | 744 | * 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 Savitski | e65c405 | 2022-03-24 18:22:19 +0000 | [diff] [blame] | 747 | * 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 Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 752 | UI: |
Lalit Maganti | 6b51562 | 2022-02-15 14:42:18 +0000 | [diff] [blame] | 753 | * Added flow arrows between binder transaction pairs (request/reply |
| 754 | and async send/async recv). |
Primiano Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 755 | SDK: |
Alexander Timin | 94204c6 | 2022-03-14 16:57:32 +0000 | [diff] [blame] | 756 | * Added support for writing typed proto messages inside DebugAnnotations. |
Mohit Saini | 5a7403c | 2022-03-14 18:24:43 +0000 | [diff] [blame] | 757 | * 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 Tucci | 1c88943 | 2022-04-01 18:14:29 +0100 | [diff] [blame] | 760 | 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 Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 767 | |
| 768 | |
Primiano Tucci | d518402 | 2022-02-10 16:41:56 +0000 | [diff] [blame] | 769 | v24.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 Tucci | d59e9de | 2022-02-09 10:42:14 +0000 | [diff] [blame] | 776 | v24.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 Tucci | d59e9de | 2022-02-09 10:42:14 +0000 | [diff] [blame] | 781 | |
| 782 | |
Primiano Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 783 | v24.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 Tucci | 24df323 | 2022-01-26 19:15:17 +0000 | [diff] [blame] | 789 | * 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 Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 791 | * 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 Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 796 | Trace Processor: |
Primiano Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 797 | * 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 Maganti | 9546598 | 2022-01-27 22:41:15 +0000 | [diff] [blame] | 801 | comments were supported. |
Primiano Tucci | 4f997ef | 2022-01-11 20:22:47 +0000 | [diff] [blame] | 802 | UI: |
Primiano Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 803 | * 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 Tucci | 2b2236f | 2022-01-28 10:50:43 +0000 | [diff] [blame] | 806 | * Changed HTTP+RPC to use the /websocket endpoint available in newer |
| 807 | versions of trace_processor --httpd. |
Primiano Tucci | fe6c2e3 | 2022-02-08 20:59:11 +0000 | [diff] [blame] | 808 | * 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 Tucci | 4f997ef | 2022-01-11 20:22:47 +0000 | [diff] [blame] | 812 | SDK: |
Primiano Tucci | d518402 | 2022-02-10 16:41:56 +0000 | [diff] [blame] | 813 | * Changed timestamps emitted by the SDK to be incremental by default, using |
| 814 | ClockSnapshot + TracePacketDefaults. |
Primiano Tucci | 4f997ef | 2022-01-11 20:22:47 +0000 | [diff] [blame] | 815 | |
| 816 | |
| 817 | v23.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 Tucci | 1d518b4 | 2022-01-11 19:09:45 +0000 | [diff] [blame] | 824 | * Changed the argument for the trace path in constructor of TraceProcessor |
| 825 | in the Python API from |file_path| to |trace|. |
Lalit Maganti | cb8e0ff | 2022-01-11 15:36:37 +0000 | [diff] [blame] | 826 | |file_path| is deprecated and may be removed in the future. |
Primiano Tucci | 1d518b4 | 2022-01-11 19:09:45 +0000 | [diff] [blame] | 827 | * Changed the Python API constructor. Now it takes a TraceProcessorConfig |
Lalit Maganti | cb8e0ff | 2022-01-11 15:36:37 +0000 | [diff] [blame] | 828 | instead of passing parameters directly. This may break existing code |
| 829 | but migration should be trivial (all current options are still |
| 830 | supported). |
Primiano Tucci | 1d518b4 | 2022-01-11 19:09:45 +0000 | [diff] [blame] | 831 | * 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 Tucci | 4f997ef | 2022-01-11 20:22:47 +0000 | [diff] [blame] | 834 | * 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 Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 840 | UI: |
| 841 | * |
| 842 | SDK: |
| 843 | * |
| 844 | |
| 845 | |
Primiano Tucci | 26e2acb | 2021-12-07 20:27:53 +0000 | [diff] [blame] | 846 | v22.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 Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 854 | v22.0 - 2021-12-03: |
| 855 | Tracing service and probes: |
Lalit Maganti | 7030e78 | 2021-11-08 13:12:42 +0000 | [diff] [blame] | 856 | * Added Android SDK version to the SystemInfo trace packet. |
Primiano Tucci | 2277f06 | 2021-11-08 22:24:05 +0000 | [diff] [blame] | 857 | * 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 Proietto | 4d9665b | 2021-11-24 18:25:46 +0000 | [diff] [blame] | 860 | * 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 Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 863 | * 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 Maganti | 33928bc | 2022-01-27 17:30:08 +0000 | [diff] [blame] | 873 | * 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 Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 876 | Trace Processor: |
Primiano Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 877 | * Speeded up proto trace ingestion by 2x (~20 MB/s -> ~40 MB/s). |
Lalit Maganti | 1cf65eb | 2021-11-10 16:13:48 +0000 | [diff] [blame] | 878 | * Changed LIKE comparisions to be case-senstive. This may break existing |
| 879 | queries but was a necessary from a performance perspective. |
Primiano Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 880 | Going forward, GLOB must be used, instead of LIKE, for checked in metrics |
| 881 | to avoid unnecessary slowdowns. |
Primiano Tucci | 2277f06 | 2021-11-08 22:24:05 +0000 | [diff] [blame] | 882 | * Changed compiler flags, assume recent x64 CPUs (see above). |
Hector Dearman | ee80bcb | 2021-11-30 13:51:30 +0000 | [diff] [blame] | 883 | * Changed how displayTimeUnit is handled in JSON traces to match catapult. |
Primiano Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 884 | * Added websocket endpoint to RPC interface to reduce query latency. |
| 885 | * Added support for hot-reloading metrics (see //docs/analysis/metrics.md). |
Lalit Maganti | 33928bc | 2022-01-27 17:30:08 +0000 | [diff] [blame] | 886 | * Added ingestion support for non-BOOTTIME ftrace clocks. |
Primiano Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 887 | UI: |
Primiano Tucci | e9e81c0 | 2021-12-03 18:02:58 +0000 | [diff] [blame] | 888 | * 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 Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 891 | SDK: |
Primiano Tucci | 360f023 | 2021-11-04 13:41:08 +0000 | [diff] [blame] | 892 | * Added UpdateDataSource() descriptor IPC endpoint to allow updates of the |
| 893 | data source capabilities (e.g., category list for track event). |
Primiano Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 894 | |
| 895 | |
Primiano Tucci | ea72787 | 2021-11-02 21:42:05 +0000 | [diff] [blame] | 896 | v21.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 Tucci | a94219a | 2021-10-05 10:38:24 +0100 | [diff] [blame] | 919 | v20.1 - 2021-10-05: |
| 920 | Tracing service and probes: |
| 921 | * Fixed standalone Windows build. Updated the llvm-win toolchain. |
| 922 | |
| 923 | |
Primiano Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 924 | v20.0 - 2021-10-03: |
| 925 | Tracing service and probes: |
Primiano Tucci | 5eabf6f | 2021-09-07 14:49:48 +0100 | [diff] [blame] | 926 | * Removed DCHECK that would cause crashes when a debug build of the service |
| 927 | is used with a producer built with -DNDEBUG. |
Daniele Di Proietto | a4c180e | 2021-09-15 15:42:34 +0000 | [diff] [blame] | 928 | * 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 Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 932 | * 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 Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 935 | Trace Processor: |
Lalit Maganti | 0900298 | 2021-09-10 17:04:08 +0100 | [diff] [blame] | 936 | * 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-Mashni | 5ed83f9 | 2021-09-09 09:08:38 +0000 | [diff] [blame] | 938 | * Added "ancestor_slice_by_stack" and "descendant_slice_by_stack" table |
| 939 | functions to walk up and down the slice stacks. |
Lalit Maganti | 09e840c | 2021-09-22 15:23:17 +0100 | [diff] [blame] | 940 | * Overhauled windowed sorting to be based on packet ordering and |
Primiano Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 941 | 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 Tucci | 876be6d | 2021-08-02 20:58:06 +0100 | [diff] [blame] | 946 | UI: |
Primiano Tucci | 6a46cc7 | 2021-10-04 18:57:12 +0100 | [diff] [blame] | 947 | * 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 Tucci | 876be6d | 2021-08-02 20:58:06 +0100 | [diff] [blame] | 951 | SDK: |
Primiano Tucci | 1a69d01 | 2021-09-07 14:52:27 +0100 | [diff] [blame] | 952 | * Changed DCHECK and DLOGs to be always disabled in SDK builds, regardless |
| 953 | of NDEBUG. |
Primiano Tucci | 876be6d | 2021-08-02 20:58:06 +0100 | [diff] [blame] | 954 | |
| 955 | |
Primiano Tucci | e356c10 | 2021-09-07 11:47:47 +0100 | [diff] [blame] | 956 | v19.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 Tucci | 876be6d | 2021-08-02 20:58:06 +0100 | [diff] [blame] | 981 | v18.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 Tucci | e2422be | 2021-07-20 18:19:45 +0100 | [diff] [blame] | 988 | * Removed the RawQuery RPC interface. |
Primiano Tucci | 50199ce | 2021-07-02 14:50:53 +0100 | [diff] [blame] | 989 | UI: |
Primiano Tucci | e2422be | 2021-07-20 18:19:45 +0100 | [diff] [blame] | 990 | * Added a highlighted section to thread slices to visualize CPU time |
Zaina Al-Mashni | 3911f61 | 2021-07-13 18:09:34 +0000 | [diff] [blame] | 991 | (darker) verses wall time (lighter). |
Primiano Tucci | 876be6d | 2021-08-02 20:58:06 +0100 | [diff] [blame] | 992 | * 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 Tucci | 50199ce | 2021-07-02 14:50:53 +0100 | [diff] [blame] | 997 | SDK: |
Primiano Tucci | e2422be | 2021-07-20 18:19:45 +0100 | [diff] [blame] | 998 | * Fix undefined reference on ~TracingMuxerFake when building the SDK. |
Primiano Tucci | 50199ce | 2021-07-02 14:50:53 +0100 | [diff] [blame] | 999 | |
| 1000 | |
| 1001 | v17.0 - 2021-07-02: |
| 1002 | Tracing service and probes: |
Ryan Savitski | 6444aad | 2021-07-02 16:30:57 +0100 | [diff] [blame] | 1003 | * Fixed a bug in ftrace parsing of absolute timestamps |
| 1004 | (RINGBUF_TYPE_TIME_STAMP), encountered on Linux kernels 5.9+. |
Primiano Tucci | 50199ce | 2021-07-02 14:50:53 +0100 | [diff] [blame] | 1005 | * 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 Tucci | 728230d | 2021-06-16 15:38:35 +0100 | [diff] [blame] | 1010 | * 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 Tucci | 50199ce | 2021-07-02 14:50:53 +0100 | [diff] [blame] | 1012 | * Added GPU frequency metrics. |
Primiano Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1013 | UI: |
Primiano Tucci | ce51d52 | 2021-06-03 14:57:45 +0100 | [diff] [blame] | 1014 | * Fixed ADB connection issues ("unable to reset device") on Windows and Mac. |
Primiano Tucci | 50199ce | 2021-07-02 14:50:53 +0100 | [diff] [blame] | 1015 | * 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 Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1017 | SDK: |
Sami Kyostila | c687c2e | 2021-06-03 13:00:45 +0100 | [diff] [blame] | 1018 | * Added support for writing track events using custom clock timestamps. |
Primiano Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1019 | |
| 1020 | |
Primiano Tucci | 5ca51f9 | 2021-06-08 10:29:35 +0100 | [diff] [blame] | 1021 | v16.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 Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1027 | v16.0 - 2021-06-01: |
| 1028 | Tracing service and probes: |
Primiano Tucci | 235610f | 2021-05-24 20:22:43 +0100 | [diff] [blame] | 1029 | * 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 Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1033 | * 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 Tucci | 9675591 | 2021-01-05 12:15:17 +0100 | [diff] [blame] | 1040 | Trace Processor: |
Primiano Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1041 | * 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 Tucci | e60b7c8 | 2021-03-03 14:09:35 +0000 | [diff] [blame] | 1047 | UI: |
Primiano Tucci | 4132740 | 2021-06-01 20:28:00 +0100 | [diff] [blame] | 1048 | * 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 Tucci | 5f30314 | 2021-06-02 10:28:50 +0100 | [diff] [blame] | 1052 | * 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 Tucci | 8220de2 | 2021-05-05 09:53:37 +0100 | [diff] [blame] | 1056 | |
| 1057 | |
| 1058 | v15.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 Timin | 129bdcf | 2021-04-16 11:36:37 +0000 | [diff] [blame] | 1080 | * 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 Tucci | 8220de2 | 2021-05-05 09:53:37 +0100 | [diff] [blame] | 1084 | * 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 Tucci | 7454e1a | 2021-04-01 13:03:19 +0100 | [diff] [blame] | 1088 | |
| 1089 | |
| 1090 | v14.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 Kyostila | edf7c86 | 2021-03-11 13:33:35 +0000 | [diff] [blame] | 1114 | SDK: |
Primiano Tucci | 7454e1a | 2021-04-01 13:03:19 +0100 | [diff] [blame] | 1115 | * 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 Tucci | e60b7c8 | 2021-03-03 14:09:35 +0000 | [diff] [blame] | 1118 | |
| 1119 | v13.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 Maganti | 88eb698 | 2021-03-01 14:28:51 +0000 | [diff] [blame] | 1127 | * 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 Tucci | e60b7c8 | 2021-03-03 14:09:35 +0000 | [diff] [blame] | 1130 | * 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 Tucci | 9675591 | 2021-01-05 12:15:17 +0100 | [diff] [blame] | 1134 | UI: |
Primiano Tucci | e60b7c8 | 2021-03-03 14:09:35 +0000 | [diff] [blame] | 1135 | * 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 Kyostila | e8c0ff5 | 2021-02-16 11:26:16 +0000 | [diff] [blame] | 1143 | 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 Kyostila | 86b10c5 | 2021-02-16 16:50:42 +0000 | [diff] [blame] | 1147 | * Record process and thread names into the trace. |
Sami Kyostila | 67cdc66 | 2021-02-26 16:42:14 +0000 | [diff] [blame] | 1148 | * Add ring buffer tracing support, i.e., periodic clearing of incremental |
| 1149 | state. |
Primiano Tucci | e60b7c8 | 2021-03-03 14:09:35 +0000 | [diff] [blame] | 1150 | Misc: |
| 1151 | * Convert python scripts to python3. |
Primiano Tucci | 9675591 | 2021-01-05 12:15:17 +0100 | [diff] [blame] | 1152 | |
| 1153 | |
Primiano Tucci | 71a9239 | 2021-02-01 23:45:28 +0100 | [diff] [blame] | 1154 | v12.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 Tucci | 9c294a4 | 2021-02-01 18:04:23 +0100 | [diff] [blame] | 1160 | v12.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 Tucci | 9675591 | 2021-01-05 12:15:17 +0100 | [diff] [blame] | 1189 | v11.0 - 2021-01-01: |
| 1190 | Tracing service and probes: |
Sami Kyostila | ae504d4 | 2020-12-02 12:00:25 +0000 | [diff] [blame] | 1191 | * Added trace packet interceptor API for rerouting trace data into |
| 1192 | non-Perfetto systems. |
Sami Kyostila | 6c15126 | 2020-12-15 18:48:51 +0000 | [diff] [blame] | 1193 | * Added support for printing track events to the console. |
Sami Kyostila | 2778ac8 | 2020-12-21 16:12:27 +0000 | [diff] [blame] | 1194 | * Added a way to observe track event tracing sessions starting and |
| 1195 | stopping. |
Isabelle Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1196 | Trace Processor: |
Primiano Tucci | 9675591 | 2021-01-05 12:15:17 +0100 | [diff] [blame] | 1197 | * 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 Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1201 | UI: |
Primiano Tucci | 9675591 | 2021-01-05 12:15:17 +0100 | [diff] [blame] | 1202 | * Fixed CPU time calculation in example queries. |
| 1203 | * Added tracks to debug Android SystemUI jank. |
Isabelle Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1204 | |
Primiano Tucci | 5d2be3a | 2020-12-01 20:42:45 +0100 | [diff] [blame] | 1205 | |
| 1206 | v10.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 Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1233 | v9.0 - 2020-11-01: |
| 1234 | Tracing service and probes: |
Sami Kyostila | f99230f | 2020-10-15 10:38:32 +0000 | [diff] [blame] | 1235 | * 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 Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1240 | * 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 Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 1243 | Trace Processor: |
Isabelle Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1244 | * Fixed type affinity of string columns. |
Primiano Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 1245 | UI: |
Lalit Maganti | 0954960 | 2020-10-01 16:47:00 +0100 | [diff] [blame] | 1246 | * Added initial support for running metrics from the UI. |
Isabelle Taylor | 8546cee | 2020-10-30 14:43:53 +0000 | [diff] [blame] | 1247 | * 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 Maganti | 0954960 | 2020-10-01 16:47:00 +0100 | [diff] [blame] | 1253 | |
| 1254 | |
| 1255 | v8.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 Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 1275 | |
| 1276 | |
Primiano Tucci | 816506e | 2020-09-01 18:13:12 +0200 | [diff] [blame] | 1277 | v7.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 Tucci | 6d7badc | 2020-07-31 19:03:27 +0200 | [diff] [blame] | 1309 | v6.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 Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 1331 | v5.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 Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 1338 | |
Primiano Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 1339 | 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 Tucci | 5b044cc | 2023-08-10 18:33:14 +0100 | [diff] [blame] | 1350 | |
Primiano Tucci | 2ab19f6 | 2020-07-01 21:28:31 +0100 | [diff] [blame] | 1351 | 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. |