Skip to content

Releases: google/perfetto

Perfetto v22.1

07 Dec 20:57
Compare
Choose a tag to compare
v22.1 - 2021-12-07:
  Tracing service and probes:
    * Added workaround for a Linux kernel bug causing some ftrace strings to
      be non-null-terminated (https://github.com/torvalds/linux/commit/f0a5157).
  Trace Processor:
    * Fixed build failures on Windows.


v22.0 - 2021-12-03:
  Tracing service and probes:
    * Added Android SDK version to the SystemInfo trace packet.
    * Changed compiler flags. Assume recent x64 CPUs (-msse4.2 -mavx -mpopcnt).
      This behavior affects only standalone builds and can be changed by setting
      enable_perfetto_x64_cpu_opt=false in the GN args.
    * The java heap profiler now rescans all the processes every time for
      continous_dump_config. The scan_pids_only_on_start can be used to restore
      the old behavior.
    * Added support for building on ARM Macs.
    * Added support for the rss_stat_throttled event on Android via
      FtraceConfig.throttle_rss_stat. In newer Android kernels the base rss_stat
      event is now unthrottled. rss_stat used to be throttled by a downstream
      kernel change, unnecessary after https://lkml.org/lkml/2021/10/25/1411 .
      atrace.rc configures throttling from userspace at boot.
    * Fixed a bug that caused IPCs to stall traced and hit the watchdog if in
      the middle of a suspend/resume. Switched from SND_TIMEO to poll(POLLOUT).
    * Added "linux.sysfs_power" data source to poll /sys/class/power_supply/
      and report periodically battery charge and drain rate if supported.
  Trace Processor:
    * Speeded up proto trace ingestion by 2x (~20 MB/s -> ~40 MB/s).
    * Changed LIKE comparisions to be case-senstive. This may break existing
      queries but was a necessary from a performance perspective.
      Going forward, GLOB must be used, instead of LIKE, for checked in metrics
      to avoid unnecessary slowdowns.
    * Changed compiler flags, assume recent x64 CPUs (see above).
    * Changed how displayTimeUnit is handled in JSON traces to match catapult.
    * Added websocket endpoint to RPC interface to reduce query latency.
    * Added support for hot-reloading metrics (see //docs/analysis/metrics.md).
  UI:
    * Added ability to save/restore record config. Remember last used config.
    * Fixed bug causing the recording page to hold onto the USB interface making
      adb unusable after a recording session.
  SDK:
    * Added UpdateDataSource() descriptor IPC endpoint to allow updates of the
      data source capabilities (e.g., category list for track event).

Perfetto v21.0

02 Nov 23:48
Compare
Choose a tag to compare
v21.0 - 2021-11-01:
  Tracing service and probes:
    * Added reporting of last 8 PERFETTO_LOG() entries and crash keys to
      crash tombstones on Android.
    * Changed kallsym parser to save 100ms for starting a tracing session with
      enable_ksyms=true.
    * Removed advertisement of the built-in data sources "android.heapprofd",
      "android.java_hprof", "linux.perf" on Linux and other platforms. Built-in
      data sources are only used to lazy-start daemons on Android OS.
    * Changed ACL files on Android atrace.rc to support to up to 24 ftrace cpus.
      No change on Linux which remains unlimited.
  Trace Processor:
    * Changed protobuf decoders to use less stack and fall back on heap sooner
      (before: 16KB of stack per decoder, after: 1.6KB). It caused problems with
      some embedders which use smaller per-thread stacks.
    * Added support for SPAN OUTER JOIN on unpartitioned tables.
    * Improved performance of as_pandas_dataframe() in the Python API by 16x.
  UI:
    * Added visualization of direct_reclaim ftrace events.
  SDK:
    * Added perfetto::{Flow,TerminatingFlow} to the track-event library.

Perfetto v20.1

05 Oct 10:11
Compare
Choose a tag to compare
v20.1 - 2021-10-05:
  Tracing service and probes:
    * Fixed standalone Windows build. Updated the llvm-win toolchain.


v20.0 - 2021-10-03:
  Tracing service and probes:
    * Removed DCHECK that would cause crashes when a debug build of the service
      is used with a producer built with -DNDEBUG.
    * Changed the service-side field-level filtering configuration protobuf
      field number, because the feature had a bug. This is effectively
      equivalent to deprecating the feature and reintroducing it under a
      different name.
    * Added support for boot tracing on Android. Early kernel tracing (prior to
      the point when /data is mounted) is not yet supported. For instructions
      see /docs/case-studies/android-boot-tracing.md .
  Trace Processor:
    * Added reqiurement of separating queries by semi-colon (;) followed by
      new-line when specifying a query file with -q to trace processor shell.
    * Added "ancestor_slice_by_stack" and "descendant_slice_by_stack" table
      functions to walk up and down the slice stacks.
    * Overhauled windowed sorting to be based on packet ordering and
      lifecycle events inside the trace instead of time-based ordering.
    * Removed |SortingMode::kForceFlushPeriodWindowedSort| due to changes to the
      sorting algorithm, which is now based on Flush events rather than time.
      Embedders should switch to |SortingMode::kDefaultHeuristics|. Other
      SortingMode enum values are no-ops and will be removed in future versions.
  UI:
    * Added initial flamegraph support for traced_perf callstack samples.
    * Added initial Pivot table for aggregation of userspace slices. The feature
      is disabled by default for and requires manual enabling via
      https://ui.perfetto.dev/#!/flags .
  SDK:
    * Changed DCHECK and DLOGs to be always disabled in SDK builds, regardless
      of NDEBUG.

Perfetto v19.0

23 Sep 10:02
Compare
Choose a tag to compare
v19.0 - 2021-09-02:
  Tracing service and probes:
    * Added ftrace clock reporting to the trace.
  Trace Processor:
    * Added support for longs/doubles to RUN_METRIC.
    * Added power profile data for sunfish, redfin, and bramble.
    * Added experimental Python library for computing slice breakdowns.
    * Fixed parsing of JSON escape sequences.
    * Fixed JSON trace detection.
  UI:
    * Added local cacheing of traces. Traces are reloaded in case of refresh or
      tab being discarded by the browser.
    * Added icon to distinguish metric-derived tracks.
    * Added release channel selector to feature flags page.
    * Fixed crash with null slice names.
  SDK:
    * Added some missing NESTABLE_ASYNC legacy trace macros.
    * Fixed reporting of producer uid in --query.
    * Fixed version numbering scheme for minor versions. Previously versions
      were numbered as like v19.0.42 where 42 represented the number of commits
      since the last major version release. This was ambiguous in the presence
      of branches. Now versions are numbered like v19.0-ab12cd34 where ab12cd34
      is the shortened Git commit-ish.

Perfetto v18.0

03 Aug 10:15
Compare
Choose a tag to compare
v18.0 - 2021-08-02:
  Tracing service and probes:
    * Added cross-compiler toolchains for Linux-{arm,64} based on Debian Sid.
      These will be used for generating monthly releases' prebuilts via LUCI.
  Trace Processor:
    * Added 'android_gpu' metric to report residency information for each GPU
      frequency (via `trace_processor_shell --run-metrics android_gpu`).
    * Removed the RawQuery RPC interface.
  UI:
    * Added a highlighted section to thread slices to visualize CPU time
      (darker) verses wall time (lighter).
    * Added global counter tracks for perf counters (e.g. "CPU 0 cycles", "CPU 0
      instructions") when the 'linux.perf' data source (traced_perf) is used.
    * Added a (feature) 'Flags' page to enable/disable individual metrics.
    * Fixed races that could cause occasional crashes when loading a trace
      from a permalink.
  SDK:
    * Fix undefined reference on ~TracingMuxerFake when building the SDK.