Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency com_google_perfetto to v47 #404

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Aug 20, 2024

Mend Renovate

This PR contains the following updates:

Package Type Update Change
com_google_perfetto http_archive major v40.0 -> v47.0

Release Notes

google/perfetto (com_google_perfetto)

v47.0: Perfetto v47.0

Compare Source

v47.0 - 2024-08-07:
  SQL Standard library:
    * Removed `cpu.cpus` and `cpu.size` modules. The functions inside
      for guessing core type were inaccurate and often misleading.
      There is no replacement for these as there is no accurate data
      source available.
    * Moved `cpu.utilization` package to `linux.cpu.utilization`. The
      functionality inside this package only works properly on Linux
      and Linux derived OSes (e.g. Android).
    * Moved `cpu.freq` module to `linux.cpu.frequency` and renamed
      `cpu_freq_counters` to `cpu_frequency_counters` for the same
      reason as above.
    * Moved `gpu.frequency` to `android.gpu.frequency` for the same reason as
      above.
    * Moved `cpu.idle` module to `linux.cpu.idle` or `linux.cpu.idle_stats` for
      the same reason as above.
    * Moved content of `linux.cpu_idle` into `linux.cpu.idle` and
      `linux.cpu.idle_stats` to make it consistent with above changes.
    * Moved `memory.android.gpu` to `android.memory.gpu`  to make it consistent
      with above changes.`
    * Moved contents of `memory.linux.process` to `linux.memory.process` and
      `android.memory.process` to make it consistent with above changes.
    * Moved `memory.linux.high_watermark` to `linux.memory.high_watermark` to
      make it consistent with above changes.
    * Moved `memory.heap_graph_dominator_tree` to
      `android.memory.heap_graph.dominator_tree`. This is to allow for the
      addition of more modules related to heap graphs.
    * Added `linux_kernel_threads` table to `linux.threads` module.
  Trace Processor:
    * Change `NotifyEndOfFile` method to return a Status object. For backwards
      compatibility, this value can be ignored but in the future a [[nodiscard]]
      annotation will be added.
    * Added `CREATE PERFETTO INDEX` to add sqlite-like indexes to Perfetto
      tables. Has the same API as `CREATE INDEX`.
  UI:
    * Updated to Typescript 5.5.2, lib es2022, & upreved various packages.
    * Made `Disposable`, `DisposableStack`, and their async variants available
      to use in the UI.
    * Vastly improved flamegraph.
    * Added track filter which can be used to search for tracks by name.
    * Added Wattson cpu power estimation plugin.
    * Added option to show thread slice ancestor/descendant slices in thread
      slice details panel context menu.
    * Added feature where plugin can ask tracks to be automatically pinned when
      adding tracks on trace load.
    * Fixed inconsistent y-range for all CPU SS tracks.
    * Switched to using explicit de/serialization when creating/loading
      permalinks.
    * Improved sched slice details query efficiency.
    * Added `TagInput` widget.
    * Added `ui/format-sources` script to run eslint and prettier in one go.
    * Reduced number of circular imports.
    * Added `SharedAsyncDisposable` for management of shared async resources.
    * Fixed rendering of negative counter tracks.
    * Improved data loss notification using a popup
    * Tidied up `TrackDescriptor`.
    * Added Android trace probes for ChromeOS
    * Added feature to try reconnect when websocket connection is lost.
    * Fixed bug in 1ns event rendering.
    * Tidied up details panel font sizes and weights.
    * Added segmented buttons widget.
    * Added 'main thread' chip to main thread tracks.
    * Added plugin API to add menu items to the sidebar.
    * Added `onTraceReady` plugin hook.
    * Various clean-ups and bugfixes.

v46.0: Perfetto v46.0

Compare Source

v46.0 - 2024-06-13:
  SQL Standard library:
    * Added megacycles support to CPU package. Added tables:
      `cpu_cycles_per_process`, `cpu_cycles_per_thread` and
      `cpu_cycles_per_cpu`.
    * Improved `memory` package. Added `memory.linux.process`,
      `memory.linux.high_watermark` and `memory.android.gpu` modules.
    * Created `gpu` package with `gpu.frequency` module.
    * Migrated `sched.utilization` package to `cpu.utilization`.
  Trace Processor:
    * Added "time to initial display" and "time to full display" metrics to
      the Android startup metric.
  UI:
    * Added plugin for synchronizing two instances of the UI - search for
      'Enable timeline sync with other Perfetto UI tabs' in the command palette.
    * Add builtin prompt functionality to the plugin API:
      I.e. `await PluginContextTrace.prompt('...')`
    * Fixed various bits of tech debt.
  SDK:
    * The TRACE_COUNTER macro and CounterTrack constructor no longer accept
      `const char *` track names. In case your code fails to compile,
      https://perfetto.dev/docs/instrumentation/track-events#dynamic-event-names
      explains how to fix the problem.

v45.0: Perfetto v45.0

Compare Source

v45.0 - 2024-05-09:
  Trace Processor:
    * Optimised single column `DISTINCT` queries.
    * Optimised `LIMIT` and `OFFSET` queries.
  SQL Standard library:
    * Improved support for querying startups on Android 9 (API level 28) and
      below. Available in `android.startup.startups` module.
    * Added tables for querying "Time To Initial Display" and "Time To Full
      Display" metrics for app startups. Available in new module
      `android.startup.time_to_display`.
    * Added table for querying hardware power rail counters in new
      `android.power_rails` module.
  UI:
    * Add tracks to the list of searchable items.
    * Use mipmaps to improve track query performance on large traces.
    * Fix slow scrolling bug in ftrace explorer tab on low DPI machines.
    * Overhaul track decider queries to improve trace load times.
    * Add track
    * Tidy up command names & remove some example ones.
    * Remove arg auto-completion in pivot table.
    * Show dominator tree views by default.
    * Fix counter event selection off-by-one error.
    * Add viewport control to the plugin API.
    * Sticky track titles to improve track button accessibility in tall tracks.
    * A handful of small bugfixes.
  SDK:
    * The TRACE_EVENT macro used to reject `const char *` event names: either
      `StaticString` or `DynamicString` needed to be specified. In the last year
      (since https://r.android.com/2494614), TRACE_EVENT mistakenly accepted
      `const char *` as an event name. This has been fixed now. In case your
      code fails to compile,
      https://perfetto.dev/docs/instrumentation/track-events#dynamic-event-names
      explains how to fix the problem.

v44.0: Perfetto v44.0

Compare Source

v44.0 - 2024-04-10:
  Trace Processor:
    * New modules added to standard library: `frames.timeline`,
      `frame.per_frame_metrics`, `sched.time_in_state`.
  UI:
    * Per-cpu scheduling tracks now distinguish real-time priority threads with
      a hatched pattern and name prefix. Based on priority during switch-in.
    * Added ftrace event cropping for traces recorded by perfetto v44+.
      Events are ignored if they precede the earliest timestamp covered by all
      per-cpu data streams. This should significantly improve the presentation
      of RING_BUFFER traces, removing artifacts such as never-ending slices
      starting at the beginning of the trace.
    * Significantly improved trace load times.
    * Improved counter track view modes, including log scale, expanded view, and
      the ability for plugin authors to link scales of several counter tracks
      together.
    * Add dominated size and objects to Java heap graph view.
      Added hotkey Q to open and close bottom drawer.
    * Fixed bug where timeline header and tracks could become horizontally
      misaligned when using browser zoom.
    * Fixed crash when hot-reloading Sass during development.
    * Fixed bug where crashed debug tracks could not be closed.
    * Fixed missing flame graph details for area selections.
    * Consistent reporting of durations for incomplete slices.
    * Switch to using prettier for formatting TS & Sass instead of ESLint.
  SDK:
    * "track_event" categories are disabled by default in the C API, if they
      don't match anything in the data source config. This behavior differs from
      the C++ API. Configs should include either `enabled_categories: "*"` or
      `disable_categories: "*"` to explicitly specify the desired behavior that
      work both for C and C++.

v43.2

Compare Source

v43.1: Perfetto v43.1

Compare Source

https://android.googlesource.com/platform/external/perfetto/+/refs/tags/v43.1
https://github.com/google/perfetto/tree/v43.1

v43.1 - 2024-03-05:
  Tracing service and probes:
    * Cherry-pick of https://r.android.com/2988674, which fixes the android x86
      standalone build.

v43.0 - 2024-03-05:
  Tracing service and probes:
    * Buffers marked as `transfer_on_clone` will be flushed independently when
      cloning.
    * ftrace: added drain_buffer_percent option to read kernel ring buffer
      based on occupancy in addition to existing periodic reads. Requires Linux
      kernel v6.1+.
    * ftrace: changed default kernel per-cpu ring buffer sizes if a config
      doesn't request an explicit size via buffer_size_kb. Added
      buffer_size_lower_bound option that lets the service choose a bigger ring
      buffer size than requested.
    * "linux.process_stats" data source: added options to record: process age,
      time spent running in userspace, and time spent running in kernel mode,
      using /proc/pid/stat. See "record_process_age" and
      "record_process_runtime" options.
  Trace Processor:
    * Added `decompress_packets` mode to the traceconv tool.
    * Support memory mapped file access on Windows.
    * Deprecated `common` standard library module, it will be removed by v45.
      Some of the functionality have been migrated to other parts of standard
      library.
  UI:
    * Added a "defaultPlugins" list to allow control over which plugins are
      enabled by default.
    * Added a feature to allow enabling/disabling plugins permanently from the
      plugins page.
    * Added plugin load times to the plugin page.
    * Added scrolling to the pinned track area.
    * Added commands for expanding and closing all tracks.
    * Added {expand,collapse}GroupsByPredicate to plugin API.
    * Added SimpleSliceTrack & SimpleCounterTrack which have the same
      functionality of debug tracks but may be added on trace load from within
      plugins.
    * Added naive track crash containment, which means tracks that crash should
      not crash the entire UI.
    * Don't render "idle" kernel thread slices in thread state tracks.
    * Fixed crash when using autofill in text inputs in chrome.
    * Fixed bug where "incomplete" slices were sometimes not rendered.
    * Fixed crash when calls to CacheStorage fail via promise rejection.
    * Fixed bug causing slices to occasionally disappear in tracks v2.
    * Fixes crash in tracksV2 when visible window is negative.
    * Fix bug when toggling the sidebar without a trace loaded would either
      crash the UI or simply not work.
    * Various TabsV2 QoL improvements.
    * Various AndroidLongBatteryTracing plugin improvements.

v42.0 - 2024-02-02:
  Tracing service and probes:
    * Linux/Android: kernel scheduling data (sched_switch and sched_waking
      ftrace events) is now serialised in a more compact format by default
      (previously required setting ftrace_config.compact_sched.enabled).
  UI:
    * Added "Realtime (Trace TZ)" timestamp formatting option to see timestamps
      in the local time of the traced device. It requires recent versions of the
      tracing service which set the system_info.timezone_off_mins field.
    * Added tab support to the plugin API.
    * Added a plugin to improve visualization of Android power traces containing
      ODPM (on-device power rail monitor) data.
    * Added support to attach the UI via ?rpc_port=1234 to multiple instances of
      trace_processor --httpd --http-port=1234 (see UI docs).
    * Fixed OOM detection message on in-memory tables.
    * Fixed rendering of events at the every beginning and end of the trace.
    * Fixed rendering of low density slices.
    * Fixed bug in filterVisibleSlices (Thanks to Liangliang Sui).
  SDK:
    * Fixed a bug that would cause DataSource::OnStop to be called twice upon
      service disconnection with HandleStopAsynchronously().
    * Fixed a long standing bug that caused the last TracePacket for every
      sequence to be lost during scraping, for data sources that do not support
      flushing. The fix works with old versions of the tracing service.

v43.0

Compare Source

v42.0: Perfetto v42.0

Compare Source

v42.0 - 2024-02-02:
  Tracing service and probes:
    * Linux/Android: kernel scheduling data (sched_switch and sched_waking
      ftrace events) is now serialised in a more compact format by default
      (previously required setting ftrace_config.compact_sched.enabled).
  UI:
    * Added "Realtime (Trace TZ)" timestamp formatting option to see timestamps
      in the local time of the traced device. It requires recent versions of the
      tracing service which set the system_info.timezone_off_mins field.
    * Added tab support to the plugin API.
    * Added a plugin to improve visualization of Android power traces containing
      ODPM (on-device power rail monitor) data.
    * Added support to attach the UI via ?rpc_port=1234 to multiple instances of
      trace_processor --httpd --http-port=1234 (see UI docs).
    * Fixed OOM detection message on in-memory tables.
    * Fixed rendering of events at the every beginning and end of the trace.
    * Fixed rendering of low density slices.
    * Fixed bug in filterVisibleSlices (Thanks to Liangliang Sui).
  SDK:
    * Fixed a bug that would cause DataSource::OnStop to be called twice upon
      service disconnection with HandleStopAsynchronously().
    * Fixed a long standing bug that caused the last TracePacket for every
      sequence to be lost during scraping, for data sources that do not support
      flushing. The fix works with old versions of the tracing service.

v41.0: Perfetto v41.0

Compare Source

v41.0 - 2023-01-02:
  Tracing service and probes:
    * Added support for ADB_SERVER_SOCKET in the websocket bridge.
    * Added support for reading Pressure Stall Information (PSI) from the kernel.
  Trace Processor:
    * Added capability to control trace processor using stdin/stdout when using
      shell binary. This acts as a simpler alternative to the existing HTTP
      control API.
    * Fixed multiple edge-case issues in RestoreInitialTables.
  SDK:
    * Fixed a long standing bug that caused the last TrackEvent event for each
      thread to be lost during scraping. The fix works with old versions of the
      tracing service.

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.


This change is Reviewable

Summary by CodeRabbit

  • New Features

    • Upgraded the perfetto library to version 47.0, potentially introducing new features and improvements.
  • Bug Fixes

    • The update may resolve issues present in the previous version, enhancing overall performance and reliability.

Copy link

coderabbitai bot commented Aug 20, 2024

Walkthrough

The update involves upgrading the com_google_perfetto dependency within the http_archive rule of the WORKSPACE file. This change enhances the library to version 47.0, adjusting key attributes such as sha256, strip_prefix, and urls to ensure compatibility and integrity. The upgrade likely introduces improvements and new features to the functionality reliant on the perfetto library.

Changes

File(s) Change Summary
WORKSPACE Updated http_archive for com_google_perfetto: upgraded dependency to version 47.0; modified sha256, strip_prefix, and urls.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant System
    participant Perfetto

    User->>System: Request functionality
    System->>Perfetto: Utilize library features
    Perfetto-->>System: Return results
    System-->>User: Display output
Loading

Poem

In the garden of code, where the rabbits hop,
A version upgrade made our features pop!
With perfetto now shining, so fresh and bright,
We dance in the moonbeams, oh what a delight!
Let's celebrate changes with joy and cheer,
For each little update brings us all near! 🐰✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (1)
WORKSPACE (1)

256-258: Incorrect strip_prefix for com_google_perfetto dependency

The strip_prefix specified as perfetto-47.0/sdk is incorrect. The top-level directory in the tarball is perfetto-47.0/, and there is no sdk directory at this level. Please adjust the strip_prefix to match the actual directory structure of the tarball.

  • Current strip_prefix: perfetto-47.0/sdk
  • Suggested correction: perfetto-47.0
Analysis chain

Verify the integrity and correctness of the updated attributes.

Ensure that the sha256 hash corresponds to the tarball of the new version v47.0. Additionally, verify that the strip_prefix and urls are correct and consistent with the new version's directory structure and download location.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the integrity of the `sha256` hash and the correctness of the `strip_prefix` and `urls` for `com_google_perfetto`.

# Test: Download the tarball and compute its sha256 hash. Expect: The computed hash matches the provided hash.
temp_dir=$(mktemp -d)
trap "rm -rf $temp_dir" EXIT
curl -L -o $temp_dir/perfetto-v47.0.tar.gz https://github.com/google/perfetto/archive/refs/tags/v47.0.tar.gz
computed_hash=$(sha256sum $temp_dir/perfetto-v47.0.tar.gz | awk '{print $1}')
expected_hash="9bbd38a0f074038bde6ccbcf5f2ff32587eb60faec254932268ecb6f17f18186"

if [ "$computed_hash" == "$expected_hash" ]; then
  echo "SHA256 hash verification passed."
else
  echo "SHA256 hash verification failed."
fi

# Test: Verify that the strip_prefix matches the directory structure of the tarball.
tar -tzf $temp_dir/perfetto-v47.0.tar.gz | head -n 1 | grep -q "^perfetto-47.0/sdk/"
if [ $? -eq 0 ]; then
  echo "strip_prefix verification passed."
else
  echo "strip_prefix verification failed."
fi

Length of output: 1387


Script:

#!/bin/bash
# Description: Manually verify the directory structure of the downloaded tarball to check the `strip_prefix`.

# Download the tarball
temp_dir=$(mktemp -d)
trap "rm -rf $temp_dir" EXIT
curl -L -o $temp_dir/perfetto-v47.0.tar.gz https://github.com/google/perfetto/archive/refs/tags/v47.0.tar.gz

# List the top-level directories in the tarball to verify the `strip_prefix`
tar -tzf $temp_dir/perfetto-v47.0.tar.gz | head -n 10

Length of output: 1135

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 6ac895c and 2b0b1c1.

Files selected for processing (1)
  • WORKSPACE (1 hunks)

@renau renau closed this Aug 22, 2024
Copy link
Contributor Author

renovate bot commented Aug 22, 2024

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 47.x releases. But if you manually upgrade to 47.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate renovate bot deleted the renovate/com_google_perfetto-47.x branch August 22, 2024 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant