Merge "Add chrome slice names metric" am: 2904f6e672 am: c56b96b525 Original change: https://android-review.googlesource.com/c/platform/external/perfetto/+/2057627 Change-Id: I638d6b08d903c03fba0186dad9f2d51491d79582 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp index 7938adb..033a182 100644 --- a/Android.bp +++ b/Android.bp
@@ -3738,6 +3738,7 @@ "protos/perfetto/metrics/chrome/performance_mark_hashes.proto", "protos/perfetto/metrics/chrome/reported_by_page.proto", "protos/perfetto/metrics/chrome/scroll_jank.proto", + "protos/perfetto/metrics/chrome/slice_names.proto", "protos/perfetto/metrics/chrome/test_chrome_metric.proto", "protos/perfetto/metrics/chrome/touch_jank.proto", "protos/perfetto/metrics/chrome/user_event_hashes.proto", @@ -8415,6 +8416,7 @@ "src/trace_processor/metrics/sql/chrome/chrome_histogram_hashes.sql", "src/trace_processor/metrics/sql/chrome/chrome_performance_mark_hashes.sql", "src/trace_processor/metrics/sql/chrome/chrome_processes.sql", + "src/trace_processor/metrics/sql/chrome/chrome_slice_names.sql", "src/trace_processor/metrics/sql/chrome/chrome_thread_slice.sql", "src/trace_processor/metrics/sql/chrome/chrome_user_event_hashes.sql", "src/trace_processor/metrics/sql/chrome/cpu_time_by_category.sql",
diff --git a/BUILD b/BUILD index 23acff1..7bd6250 100644 --- a/BUILD +++ b/BUILD
@@ -1120,6 +1120,7 @@ "src/trace_processor/metrics/sql/chrome/chrome_histogram_hashes.sql", "src/trace_processor/metrics/sql/chrome/chrome_performance_mark_hashes.sql", "src/trace_processor/metrics/sql/chrome/chrome_processes.sql", + "src/trace_processor/metrics/sql/chrome/chrome_slice_names.sql", "src/trace_processor/metrics/sql/chrome/chrome_thread_slice.sql", "src/trace_processor/metrics/sql/chrome/chrome_user_event_hashes.sql", "src/trace_processor/metrics/sql/chrome/cpu_time_by_category.sql", @@ -2842,6 +2843,7 @@ "protos/perfetto/metrics/chrome/performance_mark_hashes.proto", "protos/perfetto/metrics/chrome/reported_by_page.proto", "protos/perfetto/metrics/chrome/scroll_jank.proto", + "protos/perfetto/metrics/chrome/slice_names.proto", "protos/perfetto/metrics/chrome/test_chrome_metric.proto", "protos/perfetto/metrics/chrome/touch_jank.proto", "protos/perfetto/metrics/chrome/user_event_hashes.proto",
diff --git a/protos/perfetto/metrics/chrome/BUILD.gn b/protos/perfetto/metrics/chrome/BUILD.gn index 314e235..e88997f 100644 --- a/protos/perfetto/metrics/chrome/BUILD.gn +++ b/protos/perfetto/metrics/chrome/BUILD.gn
@@ -31,6 +31,7 @@ "performance_mark_hashes.proto", "reported_by_page.proto", "scroll_jank.proto", + "slice_names.proto", "test_chrome_metric.proto", "touch_jank.proto", "user_event_hashes.proto",
diff --git a/protos/perfetto/metrics/chrome/all_chrome_metrics.proto b/protos/perfetto/metrics/chrome/all_chrome_metrics.proto index b9802c3..a0b8763 100644 --- a/protos/perfetto/metrics/chrome/all_chrome_metrics.proto +++ b/protos/perfetto/metrics/chrome/all_chrome_metrics.proto
@@ -27,6 +27,7 @@ import "protos/perfetto/metrics/chrome/media_metric.proto"; import "protos/perfetto/metrics/chrome/performance_mark_hashes.proto"; import "protos/perfetto/metrics/chrome/reported_by_page.proto"; +import "protos/perfetto/metrics/chrome/slice_names.proto"; import "protos/perfetto/metrics/chrome/scroll_jank.proto"; import "protos/perfetto/metrics/chrome/test_chrome_metric.proto"; import "protos/perfetto/metrics/chrome/touch_jank.proto"; @@ -46,4 +47,5 @@ optional ChromeHistogramHashes chrome_histogram_hashes = 1010; optional ChromeUserEventHashes chrome_user_event_hashes = 1011; optional ChromePerformanceMarkHashes chrome_performance_mark_hashes = 1012; + optional ChromeSliceNames chrome_slice_names = 1013; }
diff --git a/protos/perfetto/metrics/chrome/slice_names.proto b/protos/perfetto/metrics/chrome/slice_names.proto new file mode 100644 index 0000000..c0a1665 --- /dev/null +++ b/protos/perfetto/metrics/chrome/slice_names.proto
@@ -0,0 +1,27 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto2"; + +package perfetto.protos; + +// The list of slice names in a trace. +// Use cases include deobfuscating slice names by getting this list, +// generating, and prepending a translation table to the trace. +message ChromeSliceNames { + repeated int64 chrome_version_code = 1; + repeated string slice_name = 2; +}
diff --git a/src/trace_processor/metrics/sql/BUILD.gn b/src/trace_processor/metrics/sql/BUILD.gn index b8fff75..28f36d1 100644 --- a/src/trace_processor/metrics/sql/BUILD.gn +++ b/src/trace_processor/metrics/sql/BUILD.gn
@@ -89,6 +89,7 @@ "chrome/chrome_histogram_hashes.sql", "chrome/chrome_performance_mark_hashes.sql", "chrome/chrome_processes.sql", + "chrome/chrome_slice_names.sql", "chrome/chrome_thread_slice.sql", "chrome/chrome_user_event_hashes.sql", "chrome/cpu_time_by_category.sql",
diff --git a/src/trace_processor/metrics/sql/chrome/chrome_slice_names.sql b/src/trace_processor/metrics/sql/chrome/chrome_slice_names.sql new file mode 100644 index 0000000..95ea995 --- /dev/null +++ b/src/trace_processor/metrics/sql/chrome/chrome_slice_names.sql
@@ -0,0 +1,32 @@ +-- +-- Copyright 2022 The Android Open Source Project +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + + +DROP VIEW IF EXISTS chrome_slice_names_output; + +CREATE VIEW chrome_slice_names_output AS +SELECT ChromeSliceNames( + 'chrome_version_code', ( + SELECT RepeatedField(int_value) + FROM metadata + WHERE name = 'cr-playstore_version_code' + ORDER BY int_value + ), + 'slice_name', ( + SELECT RepeatedField(DISTINCT(name)) + FROM slice + ORDER BY name + ) +);
diff --git a/test/trace_processor/chrome/chrome_slice_names.out b/test/trace_processor/chrome/chrome_slice_names.out new file mode 100644 index 0000000..b6890d2 --- /dev/null +++ b/test/trace_processor/chrome/chrome_slice_names.out
@@ -0,0 +1,5 @@ +[perfetto.protos.chrome_slice_names]: { + chrome_version_code: 123 + slice_name: "Looper.Dispatch: class1" + slice_name: "name2" +}
diff --git a/test/trace_processor/chrome/chrome_slice_names.textproto b/test/trace_processor/chrome/chrome_slice_names.textproto new file mode 100644 index 0000000..f864416 --- /dev/null +++ b/test/trace_processor/chrome/chrome_slice_names.textproto
@@ -0,0 +1,23 @@ +packet { + trusted_packet_sequence_id: 1 + timestamp: 1000 + track_event { + categories: "cat" + name: "Looper.Dispatch: class1" + type: 3 + } +} +packet { + trusted_packet_sequence_id: 1 + timestamp: 2000 + track_event { + categories: "cat" + name: "name2" + type: 3 + } +} +packet { + chrome_metadata { + chrome_version_code: 123 + } +}
diff --git a/test/trace_processor/chrome/index b/test/trace_processor/chrome/index index dc152a5..800f169 100644 --- a/test/trace_processor/chrome/index +++ b/test/trace_processor/chrome/index
@@ -63,3 +63,6 @@ # Chrome performance mark chrome_performance_mark_hashes.textproto chrome_performance_mark_hashes chrome_performance_mark_hashes.out + +# Chrome slices +chrome_slice_names.textproto chrome_slice_names chrome_slice_names.out