| /* |
| * Copyright (C) 2019 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/ad_services_metric.proto"; |
| import "protos/perfetto/metrics/android/android_boot.proto"; |
| import "protos/perfetto/metrics/android/android_boot_unagg.proto"; |
| import "protos/perfetto/metrics/android/android_garbage_collection_unagg_metric.proto"; |
| import "protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto"; |
| import "protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto"; |
| import "protos/perfetto/metrics/android/android_frame_timeline_metric.proto"; |
| import "protos/perfetto/metrics/android/anr_metric.proto"; |
| import "protos/perfetto/metrics/android/batt_metric.proto"; |
| import "protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto"; |
| import "protos/perfetto/metrics/android/android_blocking_calls_cuj_metric.proto"; |
| import "protos/perfetto/metrics/android/android_blocking_calls_unagg.proto"; |
| import "protos/perfetto/metrics/android/codec_metrics.proto"; |
| import "protos/perfetto/metrics/android/cpu_metric.proto"; |
| import "protos/perfetto/metrics/android/camera_metric.proto"; |
| import "protos/perfetto/metrics/android/camera_unagg_metric.proto"; |
| import "protos/perfetto/metrics/android/display_metrics.proto"; |
| import "protos/perfetto/metrics/android/dma_heap_metric.proto"; |
| import "protos/perfetto/metrics/android/dvfs_metric.proto"; |
| import "protos/perfetto/metrics/android/fastrpc_metric.proto"; |
| import "protos/perfetto/metrics/android/g2d_metric.proto"; |
| import "protos/perfetto/metrics/android/gpu_metric.proto"; |
| import "protos/perfetto/metrics/android/hwcomposer.proto"; |
| import "protos/perfetto/metrics/android/hwui_metric.proto"; |
| import "protos/perfetto/metrics/android/io_metric.proto"; |
| import "protos/perfetto/metrics/android/io_unagg_metric.proto"; |
| import "protos/perfetto/metrics/android/ion_metric.proto"; |
| import "protos/perfetto/metrics/android/irq_runtime_metric.proto"; |
| import "protos/perfetto/metrics/android/jank_cuj_metric.proto"; |
| import "protos/perfetto/metrics/android/java_heap_histogram.proto"; |
| import "protos/perfetto/metrics/android/java_heap_class_stats.proto"; |
| import "protos/perfetto/metrics/android/java_heap_stats.proto"; |
| import "protos/perfetto/metrics/android/lmk_metric.proto"; |
| import "protos/perfetto/metrics/android/lmk_reason_metric.proto"; |
| import "protos/perfetto/metrics/android/mem_metric.proto"; |
| import "protos/perfetto/metrics/android/mem_unagg_metric.proto"; |
| import "protos/perfetto/metrics/android/multiuser_metric.proto"; |
| import "protos/perfetto/metrics/android/network_metric.proto"; |
| import "protos/perfetto/metrics/android/other_traces.proto"; |
| import "protos/perfetto/metrics/android/package_list.proto"; |
| import "protos/perfetto/metrics/android/powrails_metric.proto"; |
| import "protos/perfetto/metrics/android/profiler_smaps.proto"; |
| import "protos/perfetto/metrics/android/rt_runtime_metric.proto"; |
| import "protos/perfetto/metrics/android/simpleperf.proto"; |
| import "protos/perfetto/metrics/android/startup_metric.proto"; |
| import "protos/perfetto/metrics/android/surfaceflinger.proto"; |
| import "protos/perfetto/metrics/android/task_names.proto"; |
| import "protos/perfetto/metrics/android/trace_quality.proto"; |
| import "protos/perfetto/metrics/android/android_trusty_workqueues.proto"; |
| import "protos/perfetto/metrics/android/unsymbolized_frames.proto"; |
| import "protos/perfetto/metrics/android/binder_metric.proto"; |
| import "protos/perfetto/metrics/android/monitor_contention_metric.proto"; |
| import "protos/perfetto/metrics/android/monitor_contention_agg_metric.proto"; |
| import "protos/perfetto/metrics/android/app_process_starts_metric.proto"; |
| import "protos/perfetto/metrics/android/android_oom_adjuster_metric.proto"; |
| |
| // Trace processor metadata |
| message TraceMetadata { |
| reserved 1; |
| optional int64 trace_duration_ns = 2; |
| optional string trace_uuid = 3; |
| optional string android_build_fingerprint = 4; |
| optional int64 statsd_triggering_subscription_id = 5; |
| optional int64 trace_size_bytes = 6; |
| repeated string trace_trigger = 7; |
| optional string unique_session_name = 8; |
| optional string trace_config_pbtxt = 9; |
| optional int64 sched_duration_ns = 10; |
| optional int64 tracing_started_ns = 11; |
| } |
| |
| // Stats counters for the trace. |
| // Defined in src/trace_processor/storage/stats.h |
| message TraceAnalysisStats { |
| enum Severity { |
| SEVERITY_UNKNOWN = 0; |
| SEVERITY_INFO = 1; |
| SEVERITY_DATA_LOSS = 2; |
| SEVERITY_ERROR = 3; |
| } |
| |
| enum Source { |
| SOURCE_UNKNOWN = 0; |
| SOURCE_TRACE = 1; |
| SOURCE_ANALYSIS = 2; |
| } |
| |
| message Stat { |
| optional string name = 1; |
| optional uint32 idx = 2; |
| optional Severity severity = 3; |
| optional Source source = 4; |
| |
| optional int64 count = 5; |
| } |
| |
| repeated Stat stat = 1; |
| } |
| |
| // Root message for all Perfetto-based metrics. |
| // |
| // Next id: 68 |
| message TraceMetrics { |
| reserved 4, 10, 13, 14, 16, 19; |
| |
| // Battery counters metric on Android. |
| optional AndroidBatteryMetric android_batt = 5; |
| |
| // CPU usage per trace, process and thread. |
| optional AndroidCpuMetric android_cpu = 6; |
| |
| // Memory metrics on Android (owned by the Android Telemetry team). |
| optional AndroidMemoryMetric android_mem = 1; |
| |
| // Memory metrics on Android in unaggregated form. (owned by the Android |
| // Telemetry team). |
| // Note: this generates a lot of data so should not be requested unless it |
| // is clear that this data is necessary. |
| optional AndroidMemoryUnaggregatedMetric android_mem_unagg = 11; |
| |
| // Package list. |
| optional AndroidPackageList android_package_list = 12; |
| |
| // ion buffer memory metrics. |
| optional AndroidIonMetric android_ion = 9; |
| |
| // fastrpc subsystem memory metrics. |
| optional AndroidFastrpcMetric android_fastrpc = 31; |
| |
| // Statistics about low memory kills. |
| optional AndroidLmkMetric android_lmk = 8; |
| |
| // Power Rails metrics on Android. |
| optional AndroidPowerRails android_powrails = 7; |
| |
| // Startup metrics on Android (owned by the Android Telemetry team). |
| optional AndroidStartupMetric android_startup = 2; |
| |
| // Trace metadata (applicable to all traces). |
| optional TraceMetadata trace_metadata = 3; |
| |
| // Trace stats (applicable to all traces). |
| optional TraceAnalysisStats trace_stats = 33; |
| |
| // Returns stack frames missing symbols. |
| optional UnsymbolizedFrames unsymbolized_frames = 15; |
| |
| // If the trace contains a heap graph, output allocation statistics. |
| optional JavaHeapStats java_heap_stats = 17; |
| |
| // If the trace contains a heap graph, output histogram. |
| optional JavaHeapHistogram java_heap_histogram = 21; |
| |
| // If the trace contains a heap graph, output stats per heap class. |
| optional JavaHeapClassStats java_heap_class_stats = 67; |
| |
| // Metrics used to find potential culprits of low-memory kills. |
| optional AndroidLmkReasonMetric android_lmk_reason = 18; |
| |
| optional AndroidHwuiMetric android_hwui_metric = 20; |
| |
| optional AndroidDisplayMetrics display_metrics = 22; |
| |
| optional AndroidTaskNames android_task_names = 23; |
| |
| // Deprecated was AndroidThreadTimeInStateMetric |
| reserved 24; |
| |
| // Metric associated with surfaceflinger. |
| optional AndroidSurfaceflingerMetric android_surfaceflinger = 25; |
| |
| // GPU metrics on Android. |
| optional AndroidGpuMetric android_gpu = 26; |
| |
| // Deprecated AndroidSysUiCujMetrics. |
| reserved 27; |
| |
| // Interaction and frame timings for CUJs (important UI transitions). |
| optional AndroidJankCujMetric android_jank_cuj = 48; |
| |
| // Metric associated with hwcomposer. |
| optional AndroidHwcomposerMetrics android_hwcomposer = 28; |
| |
| // Deprecated was AndroidJankMetrics; |
| reserved 29; |
| |
| // G2D metrics. |
| optional G2dMetrics g2d = 30; |
| |
| // Dmabuf heap metrics. |
| optional AndroidDmaHeapMetric android_dma_heap = 32; |
| |
| // Metric to verify the quality of the trace. |
| optional AndroidTraceQualityMetric android_trace_quality = 34; |
| |
| // Profiler smaps |
| optional ProfilerSmaps profiler_smaps = 35; |
| |
| // Multiuser - metrics for switching users. |
| optional AndroidMultiuserMetric android_multiuser = 36; |
| |
| // Metrics related to simpleperf tool |
| optional AndroidSimpleperfMetric android_simpleperf = 37; |
| |
| // Metrics for the Camera team. |
| optional AndroidCameraMetric android_camera = 38; |
| |
| // Metrics for dynamic voltage and frequency scaling. |
| optional AndroidDvfsMetric android_dvfs = 39; |
| |
| // Metrics for network performance. |
| optional AndroidNetworkMetric android_netperf = 40; |
| |
| // Metrics for the Camera team. |
| // Note: this generates a lot of data so should not be requested unless it |
| // is clear that this data is necessary. |
| optional AndroidCameraUnaggregatedMetric android_camera_unagg = 41; |
| |
| // Metrics for RT runtime. |
| optional AndroidRtRuntimeMetric android_rt_runtime = 42; |
| |
| // Metrics for IRQ runtime. |
| optional AndroidIrqRuntimeMetric android_irq_runtime = 43; |
| |
| // Metrics for the Trusty team. |
| optional AndroidTrustyWorkqueues android_trusty_workqueues = 44; |
| |
| // Summary of other concurrent trace recording. |
| optional AndroidOtherTracesMetric android_other_traces = 45; |
| |
| // Per-process Binder transaction metrics. |
| optional AndroidBinderMetric android_binder = 46; |
| |
| // Metrics for app deadline missed. |
| optional AndroidFrameTimelineMetric android_frame_timeline_metric = 47; |
| |
| // Blocking calls (e.g. binder calls) for CUJs (important UI transitions). |
| optional AndroidBlockingCallsCujMetric android_blocking_calls_cuj_metric = 49; |
| |
| optional AndroidMonitorContentionMetric android_monitor_contention = 50; |
| |
| optional AndroidSysUINotificationsBlockingCallsMetric android_sysui_notifications_blocking_calls_metric = 51; |
| |
| // Metrics to track codec framework. |
| optional AndroidCodecMetrics codec_metrics = 52; |
| |
| // Metric to track Android IO. |
| optional AndroidIo android_io = 53; |
| |
| // IO metrics on Android in unaggregated form. |
| // Note: this generates a lot of data so should not be requested unless it |
| // is clear that this data is necessary. |
| optional AndroidIoUnaggregated android_io_unagg = 54; |
| |
| // Metrics for App Not Responding (ANR) errors. |
| optional AndroidAnrMetric android_anr = 55; |
| |
| // Aggregated Android Monitor Contention metrics |
| optional AndroidMonitorContentionAggMetric android_monitor_contention_agg = 56; |
| |
| optional AndroidBootMetric android_boot = 57; |
| |
| // Metric for AdServices module. |
| optional AdServicesMetric ad_services_metric = 58; |
| |
| optional SysuiNotifShadeListBuilderMetric sysui_notif_shade_list_builder_metric = 59; |
| |
| optional SysuiUpdateNotifOnUiModeChangedMetric sysui_update_notif_on_ui_mode_changed_metric = 60; |
| |
| // Metrics for Process starts. |
| optional AndroidAppProcessStartsMetric android_app_process_starts = 61; |
| |
| // Android boot unaggregated metrics. |
| optional AndroidBootUnagg android_boot_unagg = 62; |
| |
| // Android garbage collection metrics |
| optional AndroidGarbageCollectionUnaggMetric android_garbage_collection_unagg = 63; |
| |
| // Multiuser - metrics for switching users. |
| // Specific for Android Auto |
| optional AndroidMultiuserMetric android_auto_multiuser = 64; |
| |
| // All blocking calls (e.g. binder calls) for a trace. |
| optional AndroidBlockingCallsUnagg android_blocking_calls_unagg = 65; |
| |
| // Android OOM unaggregated metrics. |
| optional AndroidOomAdjusterMetric android_oom_adjuster = 66; |
| |
| // Android |
| // Demo extensions. |
| extensions 450 to 499; |
| |
| // Vendor extensions. |
| extensions 500 to 1000; |
| |
| // Chrome metrics. |
| extensions 1001 to 2000; |
| |
| // WebView metrics. |
| extensions 2001 to 2500; |
| } |