| /* |
| * 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; |
| |
| import "protos/perfetto/metrics/android/process_metadata.proto"; |
| |
| message AndroidJankCujMetric { |
| repeated Cuj cuj = 1; |
| |
| // Next id: 12 |
| message Cuj { |
| // ID of the CUJ that is unique within the trace. |
| optional int32 id = 1; |
| |
| // Name of the CUJ, extracted from the CUJ trace marker. |
| // For example SHADE_EXPAND_COLLAPSE from J<SHADE_EXPAND_COLLAPSE>. |
| optional string name = 2; |
| |
| // Details about the process (uid, version, etc) |
| optional AndroidProcessMetadata process = 3; |
| |
| // ts of the CUJ trace marker slice. |
| optional int64 ts = 4; |
| |
| // dur of the CUJ trace marker slice. |
| optional int64 dur = 5; |
| |
| // Details about each of the frames within the CUJ. |
| repeated Frame frame = 6; |
| |
| // Details about each of the SF frames within the CUJ. |
| repeated Frame sf_frame = 10; |
| |
| // Metrics extracted from the counters output by FrameTracker |
| // Does not contain the frame_dur percentile information. |
| optional Metrics counter_metrics = 7; |
| |
| // Metrics extracted from the frame timeline. |
| optional Metrics timeline_metrics = 8; |
| |
| // Metrics extracted from the trace slices. |
| optional Metrics trace_metrics = 9; |
| |
| // Layer name of the surface where the cuj is drawn. |
| optional string layer_name = 11; |
| } |
| |
| // Next id: 8 |
| message Frame { |
| // Index of the frame within the single user journey. |
| optional int64 frame_number = 1; |
| |
| // VSYNC ID of the frame. |
| optional int64 vsync = 2; |
| |
| optional int64 ts = 3; |
| optional int64 dur = 4; |
| optional int64 dur_expected = 7; |
| |
| // Whether the app process missed the frame deadline. |
| // Only set for the App frames. Always left unset for SF frames. |
| optional bool app_missed = 5; |
| |
| // Whether SF missed the frame deadline. |
| optional bool sf_missed = 6; |
| } |
| |
| // Next id: 16 |
| message Metrics { |
| // Overall number of frames within the CUJ. |
| optional int64 total_frames = 1; |
| |
| // Number of missed frames. |
| optional int64 missed_frames = 2; |
| |
| // Number of frames missed due to the app missing the deadline. |
| optional int64 missed_app_frames = 3; |
| |
| // Number of frames missed due to SF. |
| optional int64 missed_sf_frames = 4; |
| |
| // Number of successive frames missed. |
| // Not available in timeline_metrics and trace_metrics. |
| optional int64 missed_frames_max_successive = 5; |
| |
| // Max frame duration in nanoseconds. |
| optional int64 frame_dur_max = 6; |
| |
| // Average frame duration in nanoseconds. |
| // Not available in counter_metrics. |
| optional int64 frame_dur_avg = 7; |
| |
| // Median frame duration in nanoseconds. |
| // Not available in counter_metrics. |
| optional int64 frame_dur_p50 = 8; |
| |
| // P90 frame duration in nanoseconds. |
| // Not available in counter_metrics. |
| optional int64 frame_dur_p90 = 9; |
| |
| // P95 frame duration in nanoseconds. |
| // Not available in counter_metrics. |
| optional int64 frame_dur_p95 = 10; |
| |
| // P99 frame duration in nanoseconds. |
| // Not available in counter_metrics. |
| optional int64 frame_dur_p99 = 11; |
| |
| // Median frame duration in milliseconds. |
| // Not available in counter_metrics. |
| optional double frame_dur_ms_p50 = 12; |
| |
| // P90 frame duration in milliseconds. |
| // Not available in counter_metrics. |
| optional double frame_dur_ms_p90 = 13; |
| |
| // P95 frame duration in milliseconds. |
| // Not available in counter_metrics. |
| optional double frame_dur_ms_p95 = 14; |
| |
| // P99 frame duration in milliseconds. |
| // Not available in counter_metrics. |
| optional double frame_dur_ms_p99 = 15; |
| } |
| } |