diff options
author | Parth Sane <parthsane@google.com> | 2024-04-26 09:32:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-04-26 09:32:40 +0000 |
commit | 9b70cbf6ad42cf9254d6a402841cb6df66f83348 (patch) | |
tree | 7008eb0a837a64508a16ff46562019fb0723f026 | |
parent | 5045687984fb3e60bbbb3a2ff7a910066b9ec723 (diff) | |
parent | 60222f5bb7e8f247c015a58f5c86a22e64aad518 (diff) | |
download | perfetto-9b70cbf6ad42cf9254d6a402841cb6df66f83348.tar.gz |
Merge "Add metrics for OOM adjuster" into main
-rw-r--r-- | Android.bp | 4 | ||||
-rw-r--r-- | BUILD | 2 | ||||
-rw-r--r-- | protos/perfetto/metrics/android/BUILD.gn | 1 | ||||
-rw-r--r-- | protos/perfetto/metrics/android/android_boot.proto | 31 | ||||
-rw-r--r-- | protos/perfetto/metrics/android/android_oom_adjuster_metric.proto | 53 | ||||
-rw-r--r-- | protos/perfetto/metrics/metrics.proto | 5 | ||||
-rw-r--r-- | protos/perfetto/metrics/perfetto_merged_metrics.proto | 72 | ||||
-rw-r--r-- | python/perfetto/trace_processor/metrics.descriptor | 67 | ||||
-rw-r--r-- | src/trace_processor/metrics/sql/android/BUILD.gn | 1 | ||||
-rw-r--r-- | src/trace_processor/metrics/sql/android/android_boot.sql | 264 | ||||
-rw-r--r-- | src/trace_processor/metrics/sql/android/android_oom_adjuster.sql | 139 | ||||
-rw-r--r-- | test/trace_processor/diff_tests/metrics/android/android_boot.out | 972 | ||||
-rw-r--r-- | test/trace_processor/diff_tests/metrics/android/android_oom_adjuster.out | 2745 | ||||
-rw-r--r-- | test/trace_processor/diff_tests/metrics/android/tests.py | 6 |
14 files changed, 4235 insertions, 127 deletions
diff --git a/Android.bp b/Android.bp index c66ad4e84..6a37b9211 100644 --- a/Android.bp +++ b/Android.bp @@ -5168,6 +5168,7 @@ genrule { "protos/perfetto/metrics/android/android_boot_unagg.proto", "protos/perfetto/metrics/android/android_frame_timeline_metric.proto", "protos/perfetto/metrics/android/android_garbage_collection_unagg_metric.proto", + "protos/perfetto/metrics/android/android_oom_adjuster_metric.proto", "protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto", "protos/perfetto/metrics/android/android_trusty_workqueues.proto", "protos/perfetto/metrics/android/anr_metric.proto", @@ -5257,6 +5258,7 @@ genrule { "protos/perfetto/metrics/android/android_boot_unagg.proto", "protos/perfetto/metrics/android/android_frame_timeline_metric.proto", "protos/perfetto/metrics/android/android_garbage_collection_unagg_metric.proto", + "protos/perfetto/metrics/android/android_oom_adjuster_metric.proto", "protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto", "protos/perfetto/metrics/android/android_trusty_workqueues.proto", "protos/perfetto/metrics/android/anr_metric.proto", @@ -5329,6 +5331,7 @@ genrule { "protos/perfetto/metrics/android/android_boot_unagg.proto", "protos/perfetto/metrics/android/android_frame_timeline_metric.proto", "protos/perfetto/metrics/android/android_garbage_collection_unagg_metric.proto", + "protos/perfetto/metrics/android/android_oom_adjuster_metric.proto", "protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto", "protos/perfetto/metrics/android/android_trusty_workqueues.proto", "protos/perfetto/metrics/android/anr_metric.proto", @@ -12038,6 +12041,7 @@ genrule { "src/trace_processor/metrics/sql/android/android_multiuser.sql", "src/trace_processor/metrics/sql/android/android_multiuser_populator.sql", "src/trace_processor/metrics/sql/android/android_netperf.sql", + "src/trace_processor/metrics/sql/android/android_oom_adjuster.sql", "src/trace_processor/metrics/sql/android/android_other_traces.sql", "src/trace_processor/metrics/sql/android/android_package_list.sql", "src/trace_processor/metrics/sql/android/android_powrails.sql", @@ -1998,6 +1998,7 @@ perfetto_filegroup( "src/trace_processor/metrics/sql/android/android_multiuser.sql", "src/trace_processor/metrics/sql/android/android_multiuser_populator.sql", "src/trace_processor/metrics/sql/android/android_netperf.sql", + "src/trace_processor/metrics/sql/android/android_oom_adjuster.sql", "src/trace_processor/metrics/sql/android/android_other_traces.sql", "src/trace_processor/metrics/sql/android/android_package_list.sql", "src/trace_processor/metrics/sql/android/android_powrails.sql", @@ -4444,6 +4445,7 @@ perfetto_proto_library( "protos/perfetto/metrics/android/android_boot_unagg.proto", "protos/perfetto/metrics/android/android_frame_timeline_metric.proto", "protos/perfetto/metrics/android/android_garbage_collection_unagg_metric.proto", + "protos/perfetto/metrics/android/android_oom_adjuster_metric.proto", "protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto", "protos/perfetto/metrics/android/android_trusty_workqueues.proto", "protos/perfetto/metrics/android/anr_metric.proto", diff --git a/protos/perfetto/metrics/android/BUILD.gn b/protos/perfetto/metrics/android/BUILD.gn index 5b8fab6dd..5430c22fc 100644 --- a/protos/perfetto/metrics/android/BUILD.gn +++ b/protos/perfetto/metrics/android/BUILD.gn @@ -28,6 +28,7 @@ perfetto_proto_library("@TYPE@") { "android_boot_unagg.proto", "android_frame_timeline_metric.proto", "android_garbage_collection_unagg_metric.proto", + "android_oom_adjuster_metric.proto", "android_sysui_notifications_blocking_calls_metric.proto", "android_trusty_workqueues.proto", "anr_metric.proto", diff --git a/protos/perfetto/metrics/android/android_boot.proto b/protos/perfetto/metrics/android/android_boot.proto index a043efe06..9f90ba555 100644 --- a/protos/perfetto/metrics/android/android_boot.proto +++ b/protos/perfetto/metrics/android/android_boot.proto @@ -56,8 +56,39 @@ message AndroidBootMetric { optional int64 alloc_gc_count = 11; optional double mb_per_ms_of_gc = 12; } + message OomAdjusterTransitionCounts { + // name of the item aggregated by. example: process_name, oom_adjuster_reason. + optional string name = 1; + // name of previous oom bucket. + optional string src_bucket = 2; + // name of oom bucket. + optional string dest_bucket = 3; + // count of transitions + optional int64 count = 4; + } + message OomAdjBucketDurationAggregation { + // name of the item aggregated by. example: process_name, oom_adjuster_reason + optional string name = 1; + // name of oom bucket. + optional string bucket = 2; + // Duration of the time in the bucket + optional int64 total_dur = 3; + } + message OomAdjDurationAggregation { + optional int64 min_oom_adj_dur = 1; + optional int64 max_oom_adj_dur = 2; + optional double avg_oom_adj_dur = 3; + optional int64 oom_adj_event_count = 4; + optional string oom_adj_reason = 5; + } optional ProcessStartAggregation full_trace_process_start_aggregation = 6; optional ProcessStartAggregation post_boot_process_start_aggregation = 7; optional GarbageCollectionAggregation full_trace_gc_aggregation = 8; optional GarbageCollectionAggregation post_boot_gc_aggregation = 9; + repeated OomAdjusterTransitionCounts post_boot_oom_adjuster_transition_counts_global = 10; + repeated OomAdjusterTransitionCounts post_boot_oom_adjuster_transition_counts_by_process = 11; + repeated OomAdjusterTransitionCounts post_boot_oom_adjuster_transition_counts_by_oom_adj_reason = 12; + repeated OomAdjBucketDurationAggregation post_boot_oom_adj_bucket_duration_agg_global = 13; + repeated OomAdjBucketDurationAggregation post_boot_oom_adj_bucket_duration_agg_by_process = 14; + repeated OomAdjDurationAggregation post_boot_oom_adj_duration_agg = 15; } diff --git a/protos/perfetto/metrics/android/android_oom_adjuster_metric.proto b/protos/perfetto/metrics/android/android_oom_adjuster_metric.proto new file mode 100644 index 000000000..95af7b4b0 --- /dev/null +++ b/protos/perfetto/metrics/android/android_oom_adjuster_metric.proto @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2024 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; + +message AndroidOomAdjusterMetric { + message OomAdjusterTransitionCounts { + // name of the item aggregated by. example: process_name, oom_adjuster_reason. + optional string name = 1; + // name of previous oom bucket. + optional string src_bucket = 2; + // name of oom bucket. + optional string dest_bucket = 3; + // count of transitions + optional int64 count = 4; + } + message OomAdjBucketDurationAggregation { + // name of the item aggregated by. example: process_name, oom_adjuster_reason + optional string name = 1; + // name of oom bucket. + optional string bucket = 2; + // Duration of the time in the bucket + optional int64 total_dur = 3; + } + message OomAdjDurationAggregation { + optional int64 min_oom_adj_dur = 1; + optional int64 max_oom_adj_dur = 2; + optional double avg_oom_adj_dur = 3; + optional int64 oom_adj_event_count = 4; + optional string oom_adj_reason = 5; + } + repeated OomAdjusterTransitionCounts oom_adjuster_transition_counts_global = 1; + repeated OomAdjusterTransitionCounts oom_adjuster_transition_counts_by_process = 2; + repeated OomAdjusterTransitionCounts oom_adjuster_transition_counts_by_oom_adj_reason = 3; + repeated OomAdjBucketDurationAggregation oom_adj_bucket_duration_agg_global = 4; + repeated OomAdjBucketDurationAggregation oom_adj_bucket_duration_agg_by_process = 5; + repeated OomAdjDurationAggregation oom_adj_duration_agg = 6; +}
\ No newline at end of file diff --git a/protos/perfetto/metrics/metrics.proto b/protos/perfetto/metrics/metrics.proto index 83395ecb4..c3025c301 100644 --- a/protos/perfetto/metrics/metrics.proto +++ b/protos/perfetto/metrics/metrics.proto @@ -71,6 +71,7 @@ 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 { @@ -298,6 +299,10 @@ message TraceMetrics { // 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; diff --git a/protos/perfetto/metrics/perfetto_merged_metrics.proto b/protos/perfetto/metrics/perfetto_merged_metrics.proto index 6b7a611d2..86f7d5986 100644 --- a/protos/perfetto/metrics/perfetto_merged_metrics.proto +++ b/protos/perfetto/metrics/perfetto_merged_metrics.proto @@ -203,10 +203,41 @@ message AndroidBootMetric { optional int64 alloc_gc_count = 11; optional double mb_per_ms_of_gc = 12; } + message OomAdjusterTransitionCounts { + // name of the item aggregated by. example: process_name, oom_adjuster_reason. + optional string name = 1; + // name of previous oom bucket. + optional string src_bucket = 2; + // name of oom bucket. + optional string dest_bucket = 3; + // count of transitions + optional int64 count = 4; + } + message OomAdjBucketDurationAggregation { + // name of the item aggregated by. example: process_name, oom_adjuster_reason + optional string name = 1; + // name of oom bucket. + optional string bucket = 2; + // Duration of the time in the bucket + optional int64 total_dur = 3; + } + message OomAdjDurationAggregation { + optional int64 min_oom_adj_dur = 1; + optional int64 max_oom_adj_dur = 2; + optional double avg_oom_adj_dur = 3; + optional int64 oom_adj_event_count = 4; + optional string oom_adj_reason = 5; + } optional ProcessStartAggregation full_trace_process_start_aggregation = 6; optional ProcessStartAggregation post_boot_process_start_aggregation = 7; optional GarbageCollectionAggregation full_trace_gc_aggregation = 8; optional GarbageCollectionAggregation post_boot_gc_aggregation = 9; + repeated OomAdjusterTransitionCounts post_boot_oom_adjuster_transition_counts_global = 10; + repeated OomAdjusterTransitionCounts post_boot_oom_adjuster_transition_counts_by_process = 11; + repeated OomAdjusterTransitionCounts post_boot_oom_adjuster_transition_counts_by_oom_adj_reason = 12; + repeated OomAdjBucketDurationAggregation post_boot_oom_adj_bucket_duration_agg_global = 13; + repeated OomAdjBucketDurationAggregation post_boot_oom_adj_bucket_duration_agg_by_process = 14; + repeated OomAdjDurationAggregation post_boot_oom_adj_duration_agg = 15; } // End of protos/perfetto/metrics/android/android_boot.proto @@ -365,6 +396,43 @@ message AndroidFrameTimelineMetric { // End of protos/perfetto/metrics/android/android_frame_timeline_metric.proto +// Begin of protos/perfetto/metrics/android/android_oom_adjuster_metric.proto + +message AndroidOomAdjusterMetric { + message OomAdjusterTransitionCounts { + // name of the item aggregated by. example: process_name, oom_adjuster_reason. + optional string name = 1; + // name of previous oom bucket. + optional string src_bucket = 2; + // name of oom bucket. + optional string dest_bucket = 3; + // count of transitions + optional int64 count = 4; + } + message OomAdjBucketDurationAggregation { + // name of the item aggregated by. example: process_name, oom_adjuster_reason + optional string name = 1; + // name of oom bucket. + optional string bucket = 2; + // Duration of the time in the bucket + optional int64 total_dur = 3; + } + message OomAdjDurationAggregation { + optional int64 min_oom_adj_dur = 1; + optional int64 max_oom_adj_dur = 2; + optional double avg_oom_adj_dur = 3; + optional int64 oom_adj_event_count = 4; + optional string oom_adj_reason = 5; + } + repeated OomAdjusterTransitionCounts oom_adjuster_transition_counts_global = 1; + repeated OomAdjusterTransitionCounts oom_adjuster_transition_counts_by_process = 2; + repeated OomAdjusterTransitionCounts oom_adjuster_transition_counts_by_oom_adj_reason = 3; + repeated OomAdjBucketDurationAggregation oom_adj_bucket_duration_agg_global = 4; + repeated OomAdjBucketDurationAggregation oom_adj_bucket_duration_agg_by_process = 5; + repeated OomAdjDurationAggregation oom_adj_duration_agg = 6; +} +// End of protos/perfetto/metrics/android/android_oom_adjuster_metric.proto + // Begin of protos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.proto // Blocking calls inside System UI Notifications. Shows count and total duration for each. @@ -2721,6 +2789,10 @@ message TraceMetrics { // 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; diff --git a/python/perfetto/trace_processor/metrics.descriptor b/python/perfetto/trace_processor/metrics.descriptor index cc4850f97..c337e462d 100644 --- a/python/perfetto/trace_processor/metrics.descriptor +++ b/python/perfetto/trace_processor/metrics.descriptor @@ -25,11 +25,11 @@ adIdMetricT app_set_id_metric (2).perfetto.protos.AdServicesAppSetIdMetricRappSetIdMetricM odp_metric (2..perfetto.protos.OnDevicePersonalizationMetricR odpMetric -¼ +ï 2protos/perfetto/metrics/android/android_boot.protoperfetto.protos"p ProcessStateDurations total_dur (RtotalDur: -uninterruptible_sleep_dur (RuninterruptibleSleepDur"‚ +uninterruptible_sleep_dur (RuninterruptibleSleepDur"µ AndroidBootMetric^ system_server_durations (2&.perfetto.protos.ProcessStateDurationsRsystemServerDurationsU systemui_durations (2&.perfetto.protos.ProcessStateDurationsRsystemuiDurationsU @@ -39,7 +39,14 @@ odp_metric (2..perfetto.protos.OnDevicePersonalizationMetricR odpMetric $full_trace_process_start_aggregation (2:.perfetto.protos.AndroidBootMetric.ProcessStartAggregationR fullTraceProcessStartAggregationˆ #post_boot_process_start_aggregation (2:.perfetto.protos.AndroidBootMetric.ProcessStartAggregationRpostBootProcessStartAggregationz full_trace_gc_aggregation (2?.perfetto.protos.AndroidBootMetric.GarbageCollectionAggregationRfullTraceGcAggregationx -post_boot_gc_aggregation (2?.perfetto.protos.AndroidBootMetric.GarbageCollectionAggregationRpostBootGcAggregation9 +post_boot_gc_aggregation (2?.perfetto.protos.AndroidBootMetric.GarbageCollectionAggregationRpostBootGcAggregation¢ +/post_boot_oom_adjuster_transition_counts_global + (2>.perfetto.protos.AndroidBootMetric.OomAdjusterTransitionCountsR)postBootOomAdjusterTransitionCountsGlobal© +3post_boot_oom_adjuster_transition_counts_by_process (2>.perfetto.protos.AndroidBootMetric.OomAdjusterTransitionCountsR,postBootOomAdjusterTransitionCountsByProcessµ +:post_boot_oom_adjuster_transition_counts_by_oom_adj_reason (2>.perfetto.protos.AndroidBootMetric.OomAdjusterTransitionCountsR1postBootOomAdjusterTransitionCountsByOomAdjReasonŸ +,post_boot_oom_adj_bucket_duration_agg_global
(2B.perfetto.protos.AndroidBootMetric.OomAdjBucketDurationAggregationR%postBootOomAdjBucketDurationAggGlobal¦ +0post_boot_oom_adj_bucket_duration_agg_by_process (2B.perfetto.protos.AndroidBootMetric.OomAdjBucketDurationAggregationR(postBootOomAdjBucketDurationAggByProcess +post_boot_oom_adj_duration_agg (2<.perfetto.protos.AndroidBootMetric.OomAdjDurationAggregationRpostBootOomAdjDurationAgg9 LauncherBreakdown$ cold_start_dur (RcoldStartDur™ ProcessStartAggregation& @@ -59,7 +66,24 @@ $full_trace_process_start_aggregation (2:.perfetto.protos.AndroidBootMetric. explicit_gc_count (RexplicitGcCount$ alloc_gc_count (RallocGcCount$ -mb_per_ms_of_gc (RmbPerMsOfGc +mb_per_ms_of_gc (RmbPerMsOfGc‡ +OomAdjusterTransitionCounts +name ( Rname + +src_bucket ( R srcBucket +dest_bucket ( R +destBucket +count (Rcountj +OomAdjBucketDurationAggregation +name ( Rname +bucket ( Rbucket + total_dur (RtotalDurå +OomAdjDurationAggregation% +min_oom_adj_dur (RminOomAdjDur% +max_oom_adj_dur (RmaxOomAdjDur% +avg_oom_adj_dur (RavgOomAdjDur- +oom_adj_event_count (RoomAdjEventCount$ +oom_adj_reason ( RoomAdjReason Ž ?protos/perfetto/metrics/android/app_process_starts_metric.protoperfetto.protos"¹ AndroidAppProcessStartsMetricV @@ -1203,8 +1227,34 @@ Cprotos/perfetto/metrics/android/monitor_contention_agg_metric.protoperfetto.p total_contention_dur (RtotalContentionDur? main_thread_contention_count (RmainThreadContentionCount; main_thread_contention_dur (RmainThreadContentionDur -›G -%protos/perfetto/metrics/metrics.protoperfetto.protos8protos/perfetto/metrics/android/ad_services_metric.proto2protos/perfetto/metrics/android/android_boot.proto8protos/perfetto/metrics/android/android_boot_unagg.protoMprotos/perfetto/metrics/android/android_garbage_collection_unagg_metric.protoKprotos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.protoRprotos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.protoCprotos/perfetto/metrics/android/android_frame_timeline_metric.proto0protos/perfetto/metrics/android/anr_metric.proto1protos/perfetto/metrics/android/batt_metric.protoWprotos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.protoGprotos/perfetto/metrics/android/android_blocking_calls_cuj_metric.protoBprotos/perfetto/metrics/android/android_blocking_calls_unagg.proto3protos/perfetto/metrics/android/codec_metrics.proto0protos/perfetto/metrics/android/cpu_metric.proto3protos/perfetto/metrics/android/camera_metric.proto9protos/perfetto/metrics/android/camera_unagg_metric.proto5protos/perfetto/metrics/android/display_metrics.proto5protos/perfetto/metrics/android/dma_heap_metric.proto1protos/perfetto/metrics/android/dvfs_metric.proto4protos/perfetto/metrics/android/fastrpc_metric.proto0protos/perfetto/metrics/android/g2d_metric.proto0protos/perfetto/metrics/android/gpu_metric.proto0protos/perfetto/metrics/android/hwcomposer.proto1protos/perfetto/metrics/android/hwui_metric.proto/protos/perfetto/metrics/android/io_metric.proto5protos/perfetto/metrics/android/io_unagg_metric.proto0protos/perfetto/metrics/android/ion_metric.proto8protos/perfetto/metrics/android/irq_runtime_metric.proto5protos/perfetto/metrics/android/jank_cuj_metric.proto9protos/perfetto/metrics/android/java_heap_histogram.proto5protos/perfetto/metrics/android/java_heap_stats.proto0protos/perfetto/metrics/android/lmk_metric.proto7protos/perfetto/metrics/android/lmk_reason_metric.proto0protos/perfetto/metrics/android/mem_metric.proto6protos/perfetto/metrics/android/mem_unagg_metric.proto6protos/perfetto/metrics/android/multiuser_metric.proto4protos/perfetto/metrics/android/network_metric.proto2protos/perfetto/metrics/android/other_traces.proto2protos/perfetto/metrics/android/package_list.proto5protos/perfetto/metrics/android/powrails_metric.proto4protos/perfetto/metrics/android/profiler_smaps.proto7protos/perfetto/metrics/android/rt_runtime_metric.proto0protos/perfetto/metrics/android/simpleperf.proto4protos/perfetto/metrics/android/startup_metric.proto4protos/perfetto/metrics/android/surfaceflinger.proto0protos/perfetto/metrics/android/task_names.proto3protos/perfetto/metrics/android/trace_quality.proto?protos/perfetto/metrics/android/android_trusty_workqueues.proto9protos/perfetto/metrics/android/unsymbolized_frames.proto3protos/perfetto/metrics/android/binder_metric.proto?protos/perfetto/metrics/android/monitor_contention_metric.protoCprotos/perfetto/metrics/android/monitor_contention_agg_metric.proto?protos/perfetto/metrics/android/app_process_starts_metric.proto"î +â +Aprotos/perfetto/metrics/android/android_oom_adjuster_metric.protoperfetto.protos"‹ +AndroidOomAdjusterMetric— +%oom_adjuster_transition_counts_global (2E.perfetto.protos.AndroidOomAdjusterMetric.OomAdjusterTransitionCountsR!oomAdjusterTransitionCountsGlobalž +)oom_adjuster_transition_counts_by_process (2E.perfetto.protos.AndroidOomAdjusterMetric.OomAdjusterTransitionCountsR$oomAdjusterTransitionCountsByProcessª +0oom_adjuster_transition_counts_by_oom_adj_reason (2E.perfetto.protos.AndroidOomAdjusterMetric.OomAdjusterTransitionCountsR)oomAdjusterTransitionCountsByOomAdjReason” +"oom_adj_bucket_duration_agg_global (2I.perfetto.protos.AndroidOomAdjusterMetric.OomAdjBucketDurationAggregationRoomAdjBucketDurationAggGlobal› +&oom_adj_bucket_duration_agg_by_process (2I.perfetto.protos.AndroidOomAdjusterMetric.OomAdjBucketDurationAggregationR oomAdjBucketDurationAggByProcesst +oom_adj_duration_agg (2C.perfetto.protos.AndroidOomAdjusterMetric.OomAdjDurationAggregationRoomAdjDurationAgg‡ +OomAdjusterTransitionCounts +name ( Rname + +src_bucket ( R srcBucket +dest_bucket ( R +destBucket +count (Rcountj +OomAdjBucketDurationAggregation +name ( Rname +bucket ( Rbucket + total_dur (RtotalDurå +OomAdjDurationAggregation% +min_oom_adj_dur (RminOomAdjDur% +max_oom_adj_dur (RmaxOomAdjDur% +avg_oom_adj_dur (RavgOomAdjDur- +oom_adj_event_count (RoomAdjEventCount$ +oom_adj_reason ( RoomAdjReason +»H +%protos/perfetto/metrics/metrics.protoperfetto.protos8protos/perfetto/metrics/android/ad_services_metric.proto2protos/perfetto/metrics/android/android_boot.proto8protos/perfetto/metrics/android/android_boot_unagg.protoMprotos/perfetto/metrics/android/android_garbage_collection_unagg_metric.protoKprotos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.protoRprotos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.protoCprotos/perfetto/metrics/android/android_frame_timeline_metric.proto0protos/perfetto/metrics/android/anr_metric.proto1protos/perfetto/metrics/android/batt_metric.protoWprotos/perfetto/metrics/android/android_sysui_notifications_blocking_calls_metric.protoGprotos/perfetto/metrics/android/android_blocking_calls_cuj_metric.protoBprotos/perfetto/metrics/android/android_blocking_calls_unagg.proto3protos/perfetto/metrics/android/codec_metrics.proto0protos/perfetto/metrics/android/cpu_metric.proto3protos/perfetto/metrics/android/camera_metric.proto9protos/perfetto/metrics/android/camera_unagg_metric.proto5protos/perfetto/metrics/android/display_metrics.proto5protos/perfetto/metrics/android/dma_heap_metric.proto1protos/perfetto/metrics/android/dvfs_metric.proto4protos/perfetto/metrics/android/fastrpc_metric.proto0protos/perfetto/metrics/android/g2d_metric.proto0protos/perfetto/metrics/android/gpu_metric.proto0protos/perfetto/metrics/android/hwcomposer.proto1protos/perfetto/metrics/android/hwui_metric.proto/protos/perfetto/metrics/android/io_metric.proto5protos/perfetto/metrics/android/io_unagg_metric.proto0protos/perfetto/metrics/android/ion_metric.proto8protos/perfetto/metrics/android/irq_runtime_metric.proto5protos/perfetto/metrics/android/jank_cuj_metric.proto9protos/perfetto/metrics/android/java_heap_histogram.proto5protos/perfetto/metrics/android/java_heap_stats.proto0protos/perfetto/metrics/android/lmk_metric.proto7protos/perfetto/metrics/android/lmk_reason_metric.proto0protos/perfetto/metrics/android/mem_metric.proto6protos/perfetto/metrics/android/mem_unagg_metric.proto6protos/perfetto/metrics/android/multiuser_metric.proto4protos/perfetto/metrics/android/network_metric.proto2protos/perfetto/metrics/android/other_traces.proto2protos/perfetto/metrics/android/package_list.proto5protos/perfetto/metrics/android/powrails_metric.proto4protos/perfetto/metrics/android/profiler_smaps.proto7protos/perfetto/metrics/android/rt_runtime_metric.proto0protos/perfetto/metrics/android/simpleperf.proto4protos/perfetto/metrics/android/startup_metric.proto4protos/perfetto/metrics/android/surfaceflinger.proto0protos/perfetto/metrics/android/task_names.proto3protos/perfetto/metrics/android/trace_quality.proto?protos/perfetto/metrics/android/android_trusty_workqueues.proto9protos/perfetto/metrics/android/unsymbolized_frames.proto3protos/perfetto/metrics/android/binder_metric.proto?protos/perfetto/metrics/android/monitor_contention_metric.protoCprotos/perfetto/metrics/android/monitor_contention_agg_metric.proto?protos/perfetto/metrics/android/app_process_starts_metric.protoAprotos/perfetto/metrics/android/android_oom_adjuster_metric.proto"î
TraceMetadata* trace_duration_ns (RtraceDurationNs @@ -1234,7 +1284,7 @@ trace_uuid ( R traceUuid: Source SOURCE_UNKNOWN SOURCE_TRACE -SOURCE_ANALYSIS"·' +SOURCE_ANALYSIS"”( TraceMetricsH android_batt (2%.perfetto.protos.AndroidBatteryMetricRandroidBattB android_cpu (2!.perfetto.protos.AndroidCpuMetricR @@ -1299,5 +1349,6 @@ androidAnrw android_boot_unagg> (2!.perfetto.protos.AndroidBootUnaggRandroidBootUnagg} android_garbage_collection_unagg? (24.perfetto.protos.AndroidGarbageCollectionUnaggMetricRandroidGarbageCollectionUnagg] android_auto_multiuser@ (2'.perfetto.protos.AndroidMultiuserMetricRandroidAutoMultiuserk -android_blocking_calls_unaggA (2*.perfetto.protos.AndroidBlockingCallsUnaggRandroidBlockingCallsUnagg*Âô*ôé*éÑ*ÑÅJJ +android_blocking_calls_unaggA (2*.perfetto.protos.AndroidBlockingCallsUnaggRandroidBlockingCallsUnagg[ +android_oom_adjusterB (2).perfetto.protos.AndroidOomAdjusterMetricRandroidOomAdjuster*Âô*ôé*éÑ*ÑÅJJ J
JJJJJJ
\ No newline at end of file diff --git a/src/trace_processor/metrics/sql/android/BUILD.gn b/src/trace_processor/metrics/sql/android/BUILD.gn index bd77d0a62..7de8cf6c3 100644 --- a/src/trace_processor/metrics/sql/android/BUILD.gn +++ b/src/trace_processor/metrics/sql/android/BUILD.gn @@ -56,6 +56,7 @@ perfetto_sql_source_set("android") { "android_multiuser.sql", "android_multiuser_populator.sql", "android_netperf.sql", + "android_oom_adjuster.sql", "android_other_traces.sql", "android_package_list.sql", "android_powrails.sql", diff --git a/src/trace_processor/metrics/sql/android/android_boot.sql b/src/trace_processor/metrics/sql/android/android_boot.sql index 34d1c403d..91403878f 100644 --- a/src/trace_processor/metrics/sql/android/android_boot.sql +++ b/src/trace_processor/metrics/sql/android/android_boot.sql @@ -17,6 +17,7 @@ INCLUDE PERFETTO MODULE android.process_metadata; INCLUDE PERFETTO MODULE android.app_process_starts; INCLUDE PERFETTO MODULE android.garbage_collection; +INCLUDE PERFETTO MODULE android.oom_adjuster; CREATE OR REPLACE PERFETTO FUNCTION get_durations(process_name STRING) RETURNS TABLE(uint_sleep_dur LONG, total_dur LONG) AS @@ -27,6 +28,55 @@ FROM android_process_metadata INNER JOIN thread ON thread.upid=android_process_metadata.upid INNER JOIN thread_state ON thread.utid=thread_state.utid WHERE android_process_metadata.process_name=$process_name; +CREATE OR REPLACE PERFETTO FUNCTION first_user_unlocked() RETURNS INT AS +SELECT COALESCE(MIN(ts), 0) FROM thread_slice +WHERE name GLOB "*android.intent.action.USER_UNLOCKED*"; + +DROP TABLE IF EXISTS _oom_adj_events_with_src_bucket; +CREATE PERFETTO TABLE _oom_adj_events_with_src_bucket +AS +SELECT + LAG(bucket) OVER (PARTITION BY upid ORDER BY ts) AS src_bucket, + ts, + bucket, + process_name, + oom_adj_reason +FROM android_oom_adj_intervals; + +DROP VIEW IF EXISTS oom_adj_events_by_process_name; +CREATE PERFETTO VIEW oom_adj_events_by_process_name AS +SELECT + src_bucket, + bucket, + count(ts) as count, + process_name +FROM _oom_adj_events_with_src_bucket + WHERE ts > first_user_unlocked() +GROUP BY process_name, bucket, src_bucket; + +DROP VIEW IF EXISTS oom_adj_events_global_by_bucket; +CREATE PERFETTO VIEW oom_adj_events_global_by_bucket AS +SELECT + src_bucket, + bucket, + count(ts) as count, + NULL as name +FROM _oom_adj_events_with_src_bucket +WHERE + ts > first_user_unlocked() +GROUP BY bucket, src_bucket; + +DROP VIEW IF EXISTS oom_adj_events_by_oom_adj_reason; +CREATE PERFETTO VIEW oom_adj_events_by_oom_adj_reason AS +SELECT + src_bucket, + bucket, + count(ts) as count, + oom_adj_reason as name +FROM _oom_adj_events_with_src_bucket +WHERE ts > first_user_unlocked() +GROUP BY bucket, src_bucket, oom_adj_reason; + DROP VIEW IF EXISTS android_boot_output; CREATE PERFETTO VIEW android_boot_output AS SELECT AndroidBootMetric( @@ -59,23 +109,23 @@ SELECT AndroidBootMetric( 'total_start_sum', (SELECT SUM(total_dur) FROM android_app_process_starts), 'num_of_processes', (SELECT COUNT(*) FROM android_app_process_starts), 'average_start_time', (SELECT AVG(total_dur) FROM android_app_process_starts))) - FROM android_app_process_starts), + FROM android_app_process_starts), 'post_boot_process_start_aggregation', ( SELECT NULL_IF_EMPTY(AndroidBootMetric_ProcessStartAggregation( - 'total_start_sum', (SELECT SUM(total_dur) FROM android_app_process_starts - WHERE proc_start_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) - ), - 'num_of_processes', (SELECT COUNT(*) FROM android_app_process_starts - WHERE proc_start_ts > (SELECT COALESCE(MIN(ts), 0) FROM thread_slice - WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" ORDER BY ts - ASC LIMIT 1 ) - ), - 'average_start_time', (SELECT AVG(total_dur) FROM android_app_process_starts - WHERE proc_start_ts > (SELECT COALESCE(MIN(ts), 0) FROM thread_slice - WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" ORDER BY ts - ASC LIMIT 1 ) + 'total_start_sum', ( + SELECT SUM(total_dur) + FROM android_app_process_starts + WHERE proc_start_ts > first_user_unlocked() + ), + 'num_of_processes', ( + SELECT COUNT(*) + FROM android_app_process_starts + WHERE proc_start_ts > first_user_unlocked() + ), + 'average_start_time', ( + SELECT AVG(total_dur) + FROM android_app_process_starts + WHERE proc_start_ts > first_user_unlocked() ) )) ), @@ -85,16 +135,23 @@ SELECT AndroidBootMetric( ), 'num_of_processes_with_gc', (SELECT COUNT(process_name) FROM android_garbage_collection_events ), - 'num_of_threads_with_gc', (SELECT SUM(cnt) FROM (SELECT COUNT(*) AS cnt - FROM android_garbage_collection_events - GROUP by thread_name, process_name) + 'num_of_threads_with_gc', ( + SELECT SUM(cnt) FROM ( + SELECT COUNT(*) AS cnt + FROM android_garbage_collection_events + GROUP by thread_name, process_name + ) ), 'avg_gc_duration', (SELECT AVG(gc_dur) FROM android_garbage_collection_events), 'avg_running_gc_duration', (SELECT AVG(gc_running_dur) FROM android_garbage_collection_events), - 'full_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events + 'full_gc_count', ( + SELECT COUNT(*) + FROM android_garbage_collection_events WHERE gc_type = "full" ), - 'collector_transition_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events + 'collector_transition_gc_count', ( + SELECT COUNT(*) + FROM android_garbage_collection_events WHERE gc_type = "collector_transition" ), 'young_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events @@ -117,68 +174,153 @@ SELECT AndroidBootMetric( 'post_boot_gc_aggregation', ( SELECT NULL_IF_EMPTY(AndroidBootMetric_GarbageCollectionAggregation( 'total_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + WHERE gc_ts > first_user_unlocked() ), 'num_of_processes_with_gc', (SELECT COUNT(process_name) FROM android_garbage_collection_events - WHERE gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + WHERE gc_ts > first_user_unlocked() ), 'num_of_threads_with_gc', (SELECT SUM(cnt) FROM (SELECT COUNT(*) AS cnt FROM android_garbage_collection_events - WHERE gc_ts > (SELECT COALESCE(MIN(ts), 0) FROM thread_slice - WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" ORDER BY ts - ASC LIMIT 1 ) + WHERE gc_ts > first_user_unlocked() GROUP by thread_name, process_name) ), 'avg_gc_duration', (SELECT AVG(gc_dur) FROM android_garbage_collection_events - WHERE gc_ts > (SELECT COALESCE(MIN(ts), 0) FROM thread_slice - WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" ORDER BY ts - ASC LIMIT 1 ) + WHERE gc_ts > first_user_unlocked() ), 'avg_running_gc_duration', (SELECT AVG(gc_running_dur) FROM android_garbage_collection_events - WHERE gc_ts > (SELECT COALESCE(MIN(ts), 0) FROM thread_slice - WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" ORDER BY ts - ASC LIMIT 1 ) + WHERE gc_ts > first_user_unlocked() ), 'full_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_type = "full" AND gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + WHERE gc_type = "full" AND gc_ts > first_user_unlocked() ), 'collector_transition_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_type = "collector_transition" AND gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + WHERE gc_type = "collector_transition" AND gc_ts > ( + SELECT COALESCE(MIN(ts), 0) + FROM thread_slice + WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" + ORDER BY ts ASC LIMIT 1 + ) ), - 'young_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_type = "young" AND gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + 'young_gc_count', ( + SELECT COUNT(*) + FROM android_garbage_collection_events + WHERE gc_type = "young" AND gc_ts > ( + SELECT COALESCE(MIN(ts), 0) + FROM thread_slice + WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" + ORDER BY ts ASC LIMIT 1 + ) ), - 'native_alloc_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_type = "native_alloc" AND gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + 'native_alloc_gc_count', ( + SELECT COUNT(*) + FROM android_garbage_collection_events + WHERE gc_type = "native_alloc" AND gc_ts > first_user_unlocked() ), - 'explicit_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_type = "explicit_gc" AND gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + 'explicit_gc_count', ( + SELECT COUNT(*) FROM android_garbage_collection_events + WHERE gc_type = "explicit_gc" AND gc_ts > ( + SELECT COALESCE(MIN(ts), 0) + FROM thread_slice + WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" + ORDER BY ts ASC LIMIT 1 + ) ), - 'alloc_gc_count', (SELECT COUNT(*) FROM android_garbage_collection_events - WHERE gc_type = "alloc_gc" AND gc_ts > (SELECT COALESCE(MIN(ts), 0) - FROM thread_slice WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" - ORDER BY ts ASC LIMIT 1 ) + 'alloc_gc_count', ( + SELECT COUNT(*) FROM android_garbage_collection_events + WHERE gc_type = "alloc_gc" AND gc_ts > first_user_unlocked() ), - 'mb_per_ms_of_gc', (SELECT SUM(reclaimed_mb)/SUM(gc_running_dur/1e6) AS mb_per_ms_dur + 'mb_per_ms_of_gc', ( + SELECT + SUM(reclaimed_mb)/SUM(gc_running_dur/1e6) AS mb_per_ms_dur FROM android_garbage_collection_events - WHERE gc_ts > (SELECT COALESCE(MIN(ts), 0) FROM thread_slice - WHERE name GLOB "*android.intent.action.USER_UNLOCKED*" ORDER BY ts - ASC LIMIT 1 ) + WHERE gc_ts > first_user_unlocked() ) )) + ), + 'post_boot_oom_adjuster_transition_counts_by_process', ( + SELECT RepeatedField( + AndroidBootMetric_OomAdjusterTransitionCounts( + 'name', process_name, + 'src_bucket', src_bucket, + 'dest_bucket', bucket, + 'count', count + ) + ) FROM oom_adj_events_by_process_name + ), + 'post_boot_oom_adjuster_transition_counts_global', ( + SELECT RepeatedField( + AndroidBootMetric_OomAdjusterTransitionCounts( + 'name', name, + 'src_bucket', src_bucket, + 'dest_bucket', bucket, + 'count', count + ) + ) + FROM oom_adj_events_global_by_bucket + ), + 'post_boot_oom_adjuster_transition_counts_by_oom_adj_reason',( + SELECT RepeatedField( + AndroidBootMetric_OomAdjusterTransitionCounts( + 'name', name, + 'src_bucket', src_bucket, + 'dest_bucket', bucket, + 'count', count + ) + ) + FROM oom_adj_events_by_oom_adj_reason + ), + 'post_boot_oom_adj_bucket_duration_agg_global',(SELECT RepeatedField( + AndroidBootMetric_OomAdjBucketDurationAggregation( + 'name', name, + 'bucket', bucket, + 'total_dur', total_dur + )) + FROM ( + SELECT + NULL as name, + bucket, + SUM(dur) as total_dur + FROM android_oom_adj_intervals + WHERE ts > first_user_unlocked() + GROUP BY bucket) + ), + 'post_boot_oom_adj_bucket_duration_agg_by_process',(SELECT RepeatedField( + AndroidBootMetric_OomAdjBucketDurationAggregation( + 'name', name, + 'bucket', bucket, + 'total_dur', total_dur + ) + ) + FROM ( + SELECT + process_name as name, + bucket, + SUM(dur) as total_dur + FROM android_oom_adj_intervals + WHERE ts > first_user_unlocked() + AND process_name IS NOT NULL + GROUP BY process_name, bucket) + ), + 'post_boot_oom_adj_duration_agg', + (SELECT RepeatedField( + AndroidBootMetric_OomAdjDurationAggregation( + 'min_oom_adj_dur', min_oom_adj_dur, + 'max_oom_adj_dur', max_oom_adj_dur, + 'avg_oom_adj_dur', avg_oom_adj_dur, + 'oom_adj_event_count', oom_adj_event_count, + 'oom_adj_reason', oom_adj_reason + ) + ) + FROM ( + SELECT + MIN(oom_adj_dur) as min_oom_adj_dur, + MAX(oom_adj_dur) as max_oom_adj_dur, + AVG(oom_adj_dur) as avg_oom_adj_dur, + COUNT(DISTINCT(oom_adj_id)) oom_adj_event_count, + oom_adj_reason + FROM android_oom_adj_intervals + WHERE ts > first_user_unlocked() + GROUP BY oom_adj_reason ) + ) ); diff --git a/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql b/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql new file mode 100644 index 000000000..7b752a89d --- /dev/null +++ b/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql @@ -0,0 +1,139 @@ +-- +-- Copyright 2024 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. +-- +INCLUDE PERFETTO MODULE android.oom_adjuster; + +DROP TABLE IF EXISTS _oom_adj_events_with_src_bucket; +CREATE PERFETTO TABLE _oom_adj_events_with_src_bucket +AS +SELECT + LAG(bucket) OVER (PARTITION BY upid ORDER BY ts) AS src_bucket, + ts, + bucket, + process_name, + oom_adj_reason +FROM android_oom_adj_intervals; + +DROP VIEW IF EXISTS oom_adj_events_by_process_name; +CREATE PERFETTO VIEW oom_adj_events_by_process_name AS +SELECT + src_bucket, + bucket, + count(ts) as count, + process_name +FROM _oom_adj_events_with_src_bucket +GROUP BY process_name, bucket, src_bucket; + +DROP VIEW IF EXISTS oom_adj_events_global_by_bucket; +CREATE PERFETTO VIEW oom_adj_events_global_by_bucket AS +SELECT + src_bucket, + bucket, + count(ts) as count, + NULL as name +FROM _oom_adj_events_with_src_bucket +GROUP BY bucket, src_bucket; + +DROP VIEW IF EXISTS oom_adj_events_by_oom_adj_reason; +CREATE PERFETTO VIEW oom_adj_events_by_oom_adj_reason AS +SELECT + src_bucket, + bucket, + count(ts) as count, + oom_adj_reason as name +FROM _oom_adj_events_with_src_bucket +GROUP BY bucket, src_bucket, oom_adj_reason; + +DROP VIEW IF EXISTS android_oom_adjuster_output; +CREATE PERFETTO VIEW android_oom_adjuster_output AS +SELECT AndroidOomAdjusterMetric( + 'oom_adjuster_transition_counts_by_process', ( + SELECT RepeatedField( + AndroidOomAdjusterMetric_OomAdjusterTransitionCounts( + 'name', process_name, + 'src_bucket', src_bucket, + 'dest_bucket', bucket, + 'count', count + ) + ) FROM oom_adj_events_by_process_name + ), + 'oom_adjuster_transition_counts_global', ( + SELECT RepeatedField( + AndroidOomAdjusterMetric_OomAdjusterTransitionCounts( + 'name', name, + 'src_bucket', src_bucket, + 'dest_bucket', bucket, + 'count', count + ) + ) + FROM oom_adj_events_global_by_bucket + ), + 'oom_adjuster_transition_counts_by_oom_adj_reason',( + SELECT RepeatedField( + AndroidOomAdjusterMetric_OomAdjusterTransitionCounts( + 'name', name, + 'src_bucket', src_bucket, + 'dest_bucket', bucket, + 'count', count + ) + ) + FROM oom_adj_events_by_oom_adj_reason + ), + 'oom_adj_bucket_duration_agg_global',(SELECT RepeatedField( + AndroidOomAdjusterMetric_OomAdjBucketDurationAggregation( + 'name', name, + 'bucket', bucket, + 'total_dur', total_dur + ) + ) + FROM ( + SELECT NULL as name, bucket, SUM(dur) as total_dur + FROM android_oom_adj_intervals GROUP BY bucket + ) + ), + 'oom_adj_bucket_duration_agg_by_process',(SELECT RepeatedField( + AndroidOomAdjusterMetric_OomAdjBucketDurationAggregation( + 'name', name, + 'bucket', bucket, + 'total_dur', total_dur + ) + ) + FROM ( + SELECT process_name as name, bucket, SUM(dur) as total_dur + FROM android_oom_adj_intervals + WHERE process_name IS NOT NULL + GROUP BY process_name, bucket + ) + ), + 'oom_adj_duration_agg', (SELECT RepeatedField( + AndroidOomAdjusterMetric_OomAdjDurationAggregation( + 'min_oom_adj_dur', min_oom_adj_dur, + 'max_oom_adj_dur', max_oom_adj_dur, + 'avg_oom_adj_dur', avg_oom_adj_dur, + 'oom_adj_event_count', oom_adj_event_count, + 'oom_adj_reason', oom_adj_reason + ) + ) + FROM ( + SELECT + MIN(oom_adj_dur) as min_oom_adj_dur, + MAX(oom_adj_dur) as max_oom_adj_dur, + AVG(oom_adj_dur) as avg_oom_adj_dur, + COUNT(DISTINCT(oom_adj_id)) oom_adj_event_count, + oom_adj_reason + FROM android_oom_adj_intervals GROUP BY oom_adj_reason + ) + ) +); diff --git a/test/trace_processor/diff_tests/metrics/android/android_boot.out b/test/trace_processor/diff_tests/metrics/android/android_boot.out index 3bf13cce9..50f4757df 100644 --- a/test/trace_processor/diff_tests/metrics/android/android_boot.out +++ b/test/trace_processor/diff_tests/metrics/android/android_boot.out @@ -1,59 +1,915 @@ android_boot { - system_server_durations { - total_dur: 90219646678 - uninterruptible_sleep_dur: 618417159 - } - systemui_durations { - total_dur: 48481027953 - uninterruptible_sleep_dur: 796263 - } - launcher_durations { - total_dur: 23595248987 - uninterruptible_sleep_dur: 257290255 - } - gms_durations { - total_dur: 27804143410 - uninterruptible_sleep_dur: 101685087 - } - launcher_breakdown { - cold_start_dur: 403543498 - } - full_trace_process_start_aggregation { - total_start_sum: 10678297679 - num_of_processes: 29 - average_start_time: 368217161.3448276 - } - post_boot_process_start_aggregation { - total_start_sum: 6112984648 - num_of_processes: 21 - average_start_time: 291094507.04761904 - } - full_trace_gc_aggregation { - total_gc_count: 4 - num_of_processes_with_gc: 4 - num_of_threads_with_gc: 4 - avg_gc_duration: 260516077.75 - avg_running_gc_duration: 3902628.5 - full_gc_count: 4 - collector_transition_gc_count: 0 - young_gc_count: 0 - native_alloc_gc_count: 0 - explicit_gc_count: 0 - alloc_gc_count: 0 - mb_per_ms_of_gc: 0.8829305684617432 - } - post_boot_gc_aggregation { - total_gc_count: 4 - num_of_processes_with_gc: 4 - num_of_threads_with_gc: 4 - avg_gc_duration: 260516077.75 - avg_running_gc_duration: 3902628.5 - full_gc_count: 4 - collector_transition_gc_count: 0 - young_gc_count: 0 - native_alloc_gc_count: 0 - explicit_gc_count: 0 - alloc_gc_count: 0 - mb_per_ms_of_gc: 0.8829305684617432 - } -}
\ No newline at end of file +system_server_durations { +total_dur: 90219646678 +uninterruptible_sleep_dur: 618417159 +} +systemui_durations { +total_dur: 48481027953 +uninterruptible_sleep_dur: 796263 +} +launcher_durations { +total_dur: 23595248987 +uninterruptible_sleep_dur: 257290255 +} +gms_durations { +total_dur: 27804143410 +uninterruptible_sleep_dur: 101685087 +} +launcher_breakdown { +cold_start_dur: 403543498 +} +full_trace_process_start_aggregation { +total_start_sum: 10678297679 +num_of_processes: 29 +average_start_time: 368217161.3448276 +} +post_boot_process_start_aggregation { +total_start_sum: 6112984648 +num_of_processes: 21 +average_start_time: 291094507.04761904 +} +full_trace_gc_aggregation { +total_gc_count: 4 +num_of_processes_with_gc: 4 +num_of_threads_with_gc: 4 +avg_gc_duration: 260516077.75 +avg_running_gc_duration: 3902628.5 +full_gc_count: 4 +collector_transition_gc_count: 0 +young_gc_count: 0 +native_alloc_gc_count: 0 +explicit_gc_count: 0 +alloc_gc_count: 0 +mb_per_ms_of_gc: 0.8829305684617432 +} +post_boot_gc_aggregation { +total_gc_count: 4 +num_of_processes_with_gc: 4 +num_of_threads_with_gc: 4 +avg_gc_duration: 260516077.75 +avg_running_gc_duration: 3902628.5 +full_gc_count: 4 +collector_transition_gc_count: 0 +young_gc_count: 0 +native_alloc_gc_count: 0 +explicit_gc_count: 0 +alloc_gc_count: 0 +mb_per_ms_of_gc: 0.8829305684617432 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 16 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 3 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_global { +dest_bucket: "foreground_app" +count: 21 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 4 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "perceptible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "previous_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 3 +} +post_boot_oom_adjuster_transition_counts_global { +dest_bucket: "native" +count: 4 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "perceptible_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 3 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "persistent_service" +count: 1 +} +post_boot_oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 4 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "/system/bin/apexd" +dest_bucket: "native" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "<pre-initialized>" +dest_bucket: "native" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "android.process.acore" +src_bucket: "previous_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.amazon.mp3" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.android.keychain" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.android.printspooler" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.android.providers.calendar" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.android.settings" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.apple.android.music" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.blinkslabs.blinkist.android" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.books" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging" +dest_bucket: "native" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging:rcs" +src_bucket: "perceptible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging:rcs" +src_bucket: "foreground_app" +dest_bucket: "perceptible_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.nexuslauncher" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wallpaper" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wellbeing" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 5 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wellbeing" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.work.clouddpc" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.youtube.music" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.calendar" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.carrier" +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.cellbroadcastreceiver" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.deskclock" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.dialer" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 4 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.googlequicksearchbox:interactor" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.googlequicksearchbox:search" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.keep" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.permissioncontroller" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.providers.media.module" +src_bucket: "foreground_app" +dest_bucket: "persistent_service" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.android.youtube" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.ar.core" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.ar.core" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.google.euiccpixel" +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.overdrive.mobile.android.libby" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.patreon.android" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "com.spotify.music" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "org.thoughtcrime.securesms" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_process { +name: "org.videolan.vlc" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 3 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "bindService" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 5 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startReceiver" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 7 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "processBegin" +dest_bucket: "foreground_app" +count: 21 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startReceiver" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "perceptible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "unbindService" +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "previous_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "bindService" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +dest_bucket: "native" +count: 4 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "perceptible_app" +count: 2 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 3 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "foreground_app" +dest_bucket: "persistent_service" +count: 1 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 3 +} +post_boot_oom_adjuster_transition_counts_by_oom_adj_reason { +name: "finishReceiver" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 1 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "cached_app" +total_dur: 10419196404 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "foreground_app" +total_dur: 23641055480 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "native" +total_dur: 101590616 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "perceptible_app" +total_dur: 940071238 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "perceptible_low_app" +total_dur: 199288116 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "persistent_service" +total_dur: 1546461864 +} +post_boot_oom_adj_bucket_duration_agg_global { +bucket: "visible_app" +total_dur: 2769744731 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/apexd" +bucket: "native" +total_dur: 25397654 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "<pre-initialized>" +bucket: "native" +total_dur: 50795308 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "android.process.acore" +bucket: "foreground_app" +total_dur: 823432282 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.amazon.mp3" +bucket: "foreground_app" +total_dur: 1322230378 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.android.keychain" +bucket: "foreground_app" +total_dur: 196867340 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.android.printspooler" +bucket: "foreground_app" +total_dur: 343904124 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.android.providers.calendar" +bucket: "foreground_app" +total_dur: 281386139 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.android.settings" +bucket: "cached_app" +total_dur: 967052521 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.apple.android.music" +bucket: "foreground_app" +total_dur: 1268519522 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.blinkslabs.blinkist.android" +bucket: "foreground_app" +total_dur: 1250421540 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.books" +bucket: "foreground_app" +total_dur: 1076963328 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.dreamliner" +bucket: "cached_app" +total_dur: 1086183503 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.dreamliner" +bucket: "foreground_app" +total_dur: 402609904 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.dreamliner" +bucket: "perceptible_low_app" +total_dur: 7658935 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.messaging" +bucket: "native" +total_dur: 25397654 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.messaging:rcs" +bucket: "foreground_app" +total_dur: 109047811 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.messaging:rcs" +bucket: "perceptible_app" +total_dur: 940071238 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.nexuslauncher" +bucket: "foreground_app" +total_dur: 1661132477 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.wallpaper" +bucket: "foreground_app" +total_dur: 177919993 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.wellbeing" +bucket: "cached_app" +total_dur: 816703328 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.wellbeing" +bucket: "foreground_app" +total_dur: 884970246 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.work.clouddpc" +bucket: "cached_app" +total_dur: 1695452790 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.youtube.music" +bucket: "foreground_app" +total_dur: 1558635529 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as.oss" +bucket: "cached_app" +total_dur: 621111806 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as.oss" +bucket: "foreground_app" +total_dur: 303909018 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as.oss" +bucket: "perceptible_low_app" +total_dur: 9431030 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.calendar" +bucket: "foreground_app" +total_dur: 1573637523 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.carrier" +bucket: "cached_app" +total_dur: 870239329 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.cellbroadcastreceiver" +bucket: "cached_app" +total_dur: 870311514 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.deskclock" +bucket: "foreground_app" +total_dur: 1674669994 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "cached_app" +total_dur: 11603068 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "foreground_app" +total_dur: 115664632 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "visible_app" +total_dur: 1568444611 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.dialer" +bucket: "cached_app" +total_dur: 1701572215 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms" +bucket: "cached_app" +total_dur: 38437012 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms" +bucket: "foreground_app" +total_dur: 1259805736 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms" +bucket: "visible_app" +total_dur: 397030029 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.googlequicksearchbox:interactor" +bucket: "visible_app" +total_dur: 804270091 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.googlequicksearchbox:search" +bucket: "foreground_app" +total_dur: 1467442984 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.keep" +bucket: "foreground_app" +total_dur: 576153188 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.permissioncontroller" +bucket: "cached_app" +total_dur: 870388947 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.providers.media.module" +bucket: "persistent_service" +total_dur: 1546461864 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.youtube" +bucket: "foreground_app" +total_dur: 1450400991 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.ar.core" +bucket: "foreground_app" +total_dur: 733794515 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.ar.core" +bucket: "perceptible_low_app" +total_dur: 182198151 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.google.euiccpixel" +bucket: "cached_app" +total_dur: 870140371 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.overdrive.mobile.android.libby" +bucket: "foreground_app" +total_dur: 889039012 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.patreon.android" +bucket: "foreground_app" +total_dur: 608530141 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "com.spotify.music" +bucket: "foreground_app" +total_dur: 566682160 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "org.thoughtcrime.securesms" +bucket: "foreground_app" +total_dur: 701758738 +} +post_boot_oom_adj_bucket_duration_agg_by_process { +name: "org.videolan.vlc" +bucket: "foreground_app" +total_dur: 361526235 +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 266887 +max_oom_adj_dur: 7292196 +avg_oom_adj_dur: 6121311.166666667 +oom_adj_event_count: 2 +oom_adj_reason: "activityChange" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 67180 +max_oom_adj_dur: 225871 +avg_oom_adj_dur: 160115.83333333334 +oom_adj_event_count: 5 +oom_adj_reason: "bindService" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 64657 +max_oom_adj_dur: 565674 +avg_oom_adj_dur: 232660.2142857143 +oom_adj_event_count: 11 +oom_adj_reason: "executingService" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 198120 +max_oom_adj_dur: 198120 +avg_oom_adj_dur: 198120.0 +oom_adj_event_count: 1 +oom_adj_reason: "finishReceiver" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 193766 +max_oom_adj_dur: 626302 +avg_oom_adj_dur: 383901.0 +oom_adj_event_count: 4 +oom_adj_reason: "getProvider" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 92366 +max_oom_adj_dur: 1461914 +avg_oom_adj_dur: 257078.14285714287 +oom_adj_event_count: 21 +oom_adj_reason: "processBegin" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 238525 +max_oom_adj_dur: 5160522 +avg_oom_adj_dur: 883870.1111111111 +oom_adj_event_count: 4 +oom_adj_reason: "startReceiver" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 68645 +max_oom_adj_dur: 2294270 +avg_oom_adj_dur: 747080.5 +oom_adj_event_count: 4 +oom_adj_reason: "startService" +} +post_boot_oom_adj_duration_agg { +min_oom_adj_dur: 165242 +max_oom_adj_dur: 380290 +avg_oom_adj_dur: 272766.0 +oom_adj_event_count: 2 +oom_adj_reason: "unbindService" +} +} diff --git a/test/trace_processor/diff_tests/metrics/android/android_oom_adjuster.out b/test/trace_processor/diff_tests/metrics/android/android_oom_adjuster.out new file mode 100644 index 000000000..e7135d00c --- /dev/null +++ b/test/trace_processor/diff_tests/metrics/android/android_oom_adjuster.out @@ -0,0 +1,2745 @@ +android_oom_adjuster { +oom_adjuster_transition_counts_global { +dest_bucket: "cached_app" +count: 7 +} +oom_adjuster_transition_counts_global { +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 27 +} +oom_adjuster_transition_counts_global { +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 5 +} +oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 3 +} +oom_adjuster_transition_counts_global { +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 2 +} +oom_adjuster_transition_counts_global { +dest_bucket: "cached_app_lmk_first" +count: 2 +} +oom_adjuster_transition_counts_global { +src_bucket: "cached_app" +dest_bucket: "cached_app_lmk_first" +count: 2 +} +oom_adjuster_transition_counts_global { +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app_lmk_first" +count: 2 +} +oom_adjuster_transition_counts_global { +src_bucket: "previous_app" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_global { +dest_bucket: "foreground_app" +count: 27 +} +oom_adjuster_transition_counts_global { +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 4 +} +oom_adjuster_transition_counts_global { +src_bucket: "perceptible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_global { +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 2 +} +oom_adjuster_transition_counts_global { +src_bucket: "previous_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_global { +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 4 +} +oom_adjuster_transition_counts_global { +dest_bucket: "logcat" +count: 1 +} +oom_adjuster_transition_counts_global { +dest_bucket: "native" +count: 121 +} +oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "perceptible_app" +count: 2 +} +oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 3 +} +oom_adjuster_transition_counts_global { +dest_bucket: "persistent_proc" +count: 17 +} +oom_adjuster_transition_counts_global { +dest_bucket: "persistent_service" +count: 2 +} +oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "persistent_service" +count: 1 +} +oom_adjuster_transition_counts_global { +dest_bucket: "previous_app" +count: 5 +} +oom_adjuster_transition_counts_global { +dest_bucket: "service" +count: 1 +} +oom_adjuster_transition_counts_global { +dest_bucket: "system" +count: 1 +} +oom_adjuster_transition_counts_global { +dest_bucket: "unknown_native" +count: 1 +} +oom_adjuster_transition_counts_global { +dest_bucket: "visible_app" +count: 6 +} +oom_adjuster_transition_counts_global { +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 4 +} +oom_adjuster_transition_counts_by_process { +name: ".ShannonImsService" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.android.adbd/bin/adbd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.android.hardware.cas/bin/hw/android.hardware.cas-service.example" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.android.os.statsd/bin/statsd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.google.android.hardware.biometrics.face/bin/hw/android.hardware.biometrics.face-service.22.pixel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.google.android.widevine/bin/hw/android.hardware.drm-service.widevine" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.google.pixel.camera.hal/bin/hw/android.hardware.camera.provider@2.7-service-google" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.google.pixel.camera.hal/bin/rlsservice" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/apex/com.google.pixel.wifi.ext/bin/hw/vendor.google.wifi_ext-service-vendor" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/apexd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/audioserver" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/cameraserver" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/credstore" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/drmserver" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/gatekeeperd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/gpuservice" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/hw/android.system.suspend-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/incidentd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/init" +dest_bucket: "native" +count: 2 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/installd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/ip6tables-restore" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/iptables-restore" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/keystore2" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/lmkd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/logd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/mediaserver" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/netd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/prng_seeder" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/servicemanager" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/storaged" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/surfaceflinger" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/tombstoned" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/traced" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/traced_probes" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/ueventd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/update_engine" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/virtual_camera" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/vold" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/bin/wificond" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/system_ext/bin/hw/android.hidl.allocator@1.0-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/system_ext/bin/hwservicemanager" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system/vendor/bin/wfc-pkt-router" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system_ext/bin/gs_watchdogd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/system_ext/bin/hw/vendor.google.edgetpu_app_service@1.0-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/aocd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/bipchmgr" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/cbd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/chre" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/dmd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.audio.service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.authsecret-service.citadel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.biometrics.fingerprint-service.goodix" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.bluetooth-service.bcmbtlinux" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.boot-service.default-pixel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.cas@1.2-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.composer.hwc3-service.pixel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.confirmationui-service.trusty.vendor" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.contexthub-service.generic" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.drm-service.clearkey" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.dumpstate-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.edgetpu.logging@service-edgetpu-logging" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.gatekeeper-service.trusty" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.gnss@2.1-service-brcm" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.graphics.allocator-V2-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.gxp.logging@service-gxp-logging" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.health-service.gs201" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.identity@1.0-service.citadel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.input.processor-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.memtrack-service.pixel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.neuralnetworks@service-darwinn-aidl" +dest_bucket: "native" +count: 2 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.nfc-service.st" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.oemlock-service.citadel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.power-service.pixel-libperfmgr" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.power.stats-service.pixel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.secure_element@1.2-service-gto" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.secure_element@1.2-service-gto-ese2" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.secure_element@1.2-uicc-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.security.keymint-service.citadel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.security.keymint-service.trusty" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.sensors-service.multihal" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.thermal-service.pixel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.usb-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.usb.gadget-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.vibrator-service.cs40l26" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/android.hardware.weaver-service.citadel" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/battery_mitigation" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/citadeld" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/google.hardware.media.c2@1.0-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/gpsd" +dest_bucket: "unknown_native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/lhd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/rild_exynos" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/samsung.hardware.media.c2@1.0-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/scd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/vendor.dolby.media.c2@1.0-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/vendor.google.audiometricext@1.0-service-vendor" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/vendor.google.google_battery-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/vendor.google.radioext@1.0-service" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/vendor.google.wireless_charger-default" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/hw/wpa_supplicant" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/modem_svc_sit" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/pixelstats-vendor" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/ramdump" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/rfsd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/sced" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/securedpud.slider" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/sscoredump" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/storageproxyd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/trusty_metricsd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/twoshay" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/vcd" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "/vendor/bin/vndservicemanager" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "<pre-initialized>" +dest_bucket: "native" +count: 2 +} +oom_adjuster_transition_counts_by_process { +name: "android.process.acore" +src_bucket: "previous_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "android.process.acore" +dest_bucket: "previous_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.amazon.mp3" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.hbmsvmanager" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.keychain" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.networkstack.process" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.nfc" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.phone" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.pixellogger" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.printspooler" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.providers.calendar" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.qns" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.se" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.settings" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.settings" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.android.systemui" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.apple.android.music" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.blinkslabs.blinkist.android" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.SSRestartDetector" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.books" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.cbrsnetworkmonitor" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.dreamliner" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging:rcs" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging:rcs" +src_bucket: "perceptible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.messaging:rcs" +src_bucket: "foreground_app" +dest_bucket: "perceptible_app" +count: 2 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.nexuslauncher" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.nexuslauncher" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.scone" +dest_bucket: "service" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wallpaper" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wellbeing" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wellbeing" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 8 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.wellbeing" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.work.clouddpc" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.work.clouddpc" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 2 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.work.clouddpc" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.work.clouddpc" +src_bucket: "cached_app" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.apps.youtube.music" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.as" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.as.oss" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.bluetooth" +dest_bucket: "persistent_service" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.calendar" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.carrier" +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.carrier" +dest_bucket: "previous_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.cellbroadcastreceiver" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.cellbroadcastreceiver" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 3 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.connectivitythermalpowermanager" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.deskclock" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.deskclock" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.deskclock" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.deskclock" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "cached_app" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.devicelockcontroller" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 2 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.dialer" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.dialer" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 7 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.euicc" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.ext.services" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.flipendo" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.flipendo" +src_bucket: "previous_app" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.flipendo" +dest_bucket: "previous_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 5 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms.persistent" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.gms.persistent" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.googlequicksearchbox:interactor" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.googlequicksearchbox:interactor" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.googlequicksearchbox:search" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.grilservice" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.ims" +dest_bucket: "persistent_service" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.iwlan" +dest_bucket: "visible_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.keep" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.permissioncontroller" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.permissioncontroller" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.pixelsystemservice" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.providers.media.module" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.providers.media.module" +src_bucket: "foreground_app" +dest_bucket: "persistent_service" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.repairmode" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.repairmode" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.repairmode" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.android.youtube" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.ar.core" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.ar.core" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.euiccpixel" +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.euiccpixel" +dest_bucket: "previous_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.google.pixel.camera.services" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.overdrive.mobile.android.libby" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.patreon.android" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.samsung.slsi.telephony.oem.oemrilhookservice" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.samsung.slsi.telephony.oemril" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.shannon.imsservice" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.shannon.rcsservice" +dest_bucket: "persistent_proc" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.shannon.rcsservice:shannonrcsservice" +dest_bucket: "previous_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "com.spotify.music" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "logcat" +dest_bucket: "logcat" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "logcat" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "media.extractor" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "media.metrics" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "media.swcodec" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "org.thoughtcrime.securesms" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "org.videolan.vlc" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "perfetto" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "system_server" +dest_bucket: "system" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "webview_zygote" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_process { +name: "zygote64" +dest_bucket: "native" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "cached_app" +count: 7 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 8 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "bindService" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 8 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startReceiver" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 7 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "uiVisibility" +src_bucket: "cached_app" +dest_bucket: "cached_app" +count: 3 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "uiVisibility" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app" +count: 5 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "cached_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "previous_app" +dest_bucket: "cached_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "cached_app_lmk_first" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "cached_app" +dest_bucket: "cached_app_lmk_first" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "cached_app_lmk_first" +dest_bucket: "cached_app_lmk_first" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +src_bucket: "previous_app" +dest_bucket: "cached_app_lmk_first" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "foreground_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "activityChange" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "processBegin" +dest_bucket: "foreground_app" +count: 24 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startReceiver" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "cached_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "perceptible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "unbindService" +src_bucket: "perceptible_low_app" +dest_bucket: "foreground_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "previous_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "bindService" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "getProvider" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "visible_app" +dest_bucket: "foreground_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "logcat" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "native" +count: 117 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +dest_bucket: "native" +count: 4 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "perceptible_app" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "perceptible_low_app" +count: 3 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "persistent_proc" +count: 13 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "processBegin" +dest_bucket: "persistent_proc" +count: 4 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "persistent_service" +count: 2 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "startService" +src_bucket: "foreground_app" +dest_bucket: "persistent_service" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "previous_app" +count: 5 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "service" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "system" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "unknown_native" +count: 1 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +dest_bucket: "visible_app" +count: 6 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "executingService" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 3 +} +oom_adjuster_transition_counts_by_oom_adj_reason { +name: "finishReceiver" +src_bucket: "foreground_app" +dest_bucket: "visible_app" +count: 1 +} +oom_adj_bucket_duration_agg_global { +bucket: "cached_app" +total_dur: 20351484924 +} +oom_adj_bucket_duration_agg_global { +bucket: "cached_app_lmk_first" +total_dur: 544761924 +} +oom_adj_bucket_duration_agg_global { +bucket: "foreground_app" +total_dur: 33803455234 +} +oom_adj_bucket_duration_agg_global { +bucket: "logcat" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_global { +bucket: "native" +total_dur: 263503709570 +} +oom_adj_bucket_duration_agg_global { +bucket: "perceptible_app" +total_dur: 940071238 +} +oom_adj_bucket_duration_agg_global { +bucket: "perceptible_low_app" +total_dur: 199288116 +} +oom_adj_bucket_duration_agg_global { +bucket: "persistent_proc" +total_dur: 36752485443 +} +oom_adj_bucket_duration_agg_global { +bucket: "persistent_service" +total_dur: 6049062188 +} +oom_adj_bucket_duration_agg_global { +bucket: "previous_app" +total_dur: 6572285720 +} +oom_adj_bucket_duration_agg_global { +bucket: "service" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_global { +bucket: "system" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_global { +bucket: "unknown_native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_global { +bucket: "visible_app" +total_dur: 12579222928 +} +oom_adj_bucket_duration_agg_by_process { +name: ".ShannonImsService" +bucket: "foreground_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.android.adbd/bin/adbd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.android.hardware.cas/bin/hw/android.hardware.cas-service.example" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.android.os.statsd/bin/statsd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.google.android.hardware.biometrics.face/bin/hw/android.hardware.biometrics.face-service.22.pixel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.google.android.widevine/bin/hw/android.hardware.drm-service.widevine" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.google.pixel.camera.hal/bin/hw/android.hardware.camera.provider@2.7-service-google" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.google.pixel.camera.hal/bin/rlsservice" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/apex/com.google.pixel.wifi.ext/bin/hw/vendor.google.wifi_ext-service-vendor" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/apexd" +bucket: "native" +total_dur: 25397654 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/audioserver" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/cameraserver" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/credstore" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/drmserver" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/gatekeeperd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/gpuservice" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/hw/android.system.suspend-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/incidentd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/init" +bucket: "native" +total_dur: 4502600324 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/installd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/ip6tables-restore" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/iptables-restore" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/keystore2" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/lmkd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/logd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/mediaserver" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/netd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/prng_seeder" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/servicemanager" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/storaged" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/surfaceflinger" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/tombstoned" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/traced" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/traced_probes" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/ueventd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/update_engine" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/virtual_camera" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/vold" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/bin/wificond" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/system_ext/bin/hw/android.hidl.allocator@1.0-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/system_ext/bin/hwservicemanager" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system/vendor/bin/wfc-pkt-router" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system_ext/bin/gs_watchdogd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/system_ext/bin/hw/vendor.google.edgetpu_app_service@1.0-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/aocd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/bipchmgr" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/cbd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/chre" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/dmd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.audio.service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.authsecret-service.citadel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.biometrics.fingerprint-service.goodix" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.bluetooth-service.bcmbtlinux" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.boot-service.default-pixel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.cas@1.2-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.composer.hwc3-service.pixel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.confirmationui-service.trusty.vendor" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.contexthub-service.generic" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.drm-service.clearkey" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.dumpstate-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.edgetpu.logging@service-edgetpu-logging" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.gatekeeper-service.trusty" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.gnss@2.1-service-brcm" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.graphics.allocator-V2-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.gxp.logging@service-gxp-logging" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.health-service.gs201" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.identity@1.0-service.citadel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.input.processor-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.memtrack-service.pixel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.neuralnetworks@service-darwinn-aidl" +bucket: "native" +total_dur: 4502600324 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.nfc-service.st" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.oemlock-service.citadel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.power-service.pixel-libperfmgr" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.power.stats-service.pixel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.secure_element@1.2-service-gto" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.secure_element@1.2-service-gto-ese2" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.secure_element@1.2-uicc-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.security.keymint-service.citadel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.security.keymint-service.trusty" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.sensors-service.multihal" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.thermal-service.pixel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.usb-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.usb.gadget-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.vibrator-service.cs40l26" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/android.hardware.weaver-service.citadel" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/battery_mitigation" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/citadeld" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/google.hardware.media.c2@1.0-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/gpsd" +bucket: "unknown_native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/lhd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/rild_exynos" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/samsung.hardware.media.c2@1.0-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/scd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/vendor.dolby.media.c2@1.0-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/vendor.google.audiometricext@1.0-service-vendor" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/vendor.google.google_battery-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/vendor.google.radioext@1.0-service" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/vendor.google.wireless_charger-default" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/hw/wpa_supplicant" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/modem_svc_sit" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/pixelstats-vendor" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/ramdump" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/rfsd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/sced" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/securedpud.slider" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/sscoredump" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/storageproxyd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/trusty_metricsd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/twoshay" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/vcd" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "/vendor/bin/vndservicemanager" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "<pre-initialized>" +bucket: "native" +total_dur: 50795308 +} +oom_adj_bucket_duration_agg_by_process { +name: "android.process.acore" +bucket: "foreground_app" +total_dur: 823432282 +} +oom_adj_bucket_duration_agg_by_process { +name: "android.process.acore" +bucket: "previous_app" +total_dur: 1427867880 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.amazon.mp3" +bucket: "foreground_app" +total_dur: 1322230378 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.hbmsvmanager" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.keychain" +bucket: "foreground_app" +total_dur: 196867340 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.networkstack.process" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.nfc" +bucket: "persistent_proc" +total_dur: 1883581900 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.phone" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.pixellogger" +bucket: "persistent_proc" +total_dur: 1852027416 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.printspooler" +bucket: "foreground_app" +total_dur: 343904124 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.providers.calendar" +bucket: "foreground_app" +total_dur: 281386139 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.qns" +bucket: "visible_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.se" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.settings" +bucket: "cached_app" +total_dur: 967052521 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.settings" +bucket: "foreground_app" +total_dur: 1284247641 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.android.systemui" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.apple.android.music" +bucket: "foreground_app" +total_dur: 1268519522 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.blinkslabs.blinkist.android" +bucket: "foreground_app" +total_dur: 1250421540 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.SSRestartDetector" +bucket: "persistent_proc" +total_dur: 1885479849 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.books" +bucket: "foreground_app" +total_dur: 1076963328 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.cbrsnetworkmonitor" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.dreamliner" +bucket: "cached_app" +total_dur: 1086183503 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.dreamliner" +bucket: "foreground_app" +total_dur: 402609904 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.dreamliner" +bucket: "perceptible_low_app" +total_dur: 7658935 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.messaging" +bucket: "native" +total_dur: 25397654 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.messaging:rcs" +bucket: "foreground_app" +total_dur: 991455486 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.messaging:rcs" +bucket: "perceptible_app" +total_dur: 940071238 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.nexuslauncher" +bucket: "foreground_app" +total_dur: 1661132477 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.nexuslauncher" +bucket: "visible_app" +total_dur: 590167685 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.scone" +bucket: "service" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.wallpaper" +bucket: "foreground_app" +total_dur: 177919993 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.wellbeing" +bucket: "cached_app" +total_dur: 1366329916 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.wellbeing" +bucket: "foreground_app" +total_dur: 884970246 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.work.clouddpc" +bucket: "cached_app" +total_dur: 2194632641 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.work.clouddpc" +bucket: "cached_app_lmk_first" +total_dur: 56667521 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.apps.youtube.music" +bucket: "foreground_app" +total_dur: 1558635529 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as" +bucket: "foreground_app" +total_dur: 2003700552 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as.oss" +bucket: "cached_app" +total_dur: 621111806 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as.oss" +bucket: "foreground_app" +total_dur: 303909018 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.as.oss" +bucket: "perceptible_low_app" +total_dur: 9431030 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.bluetooth" +bucket: "persistent_service" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.calendar" +bucket: "foreground_app" +total_dur: 1573637523 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.carrier" +bucket: "cached_app" +total_dur: 870239329 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.carrier" +bucket: "previous_app" +total_dur: 1381060833 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.cellbroadcastreceiver" +bucket: "cached_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.connectivitythermalpowermanager" +bucket: "persistent_proc" +total_dur: 1864494172 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.deskclock" +bucket: "cached_app" +total_dur: 389354777 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.deskclock" +bucket: "cached_app_lmk_first" +total_dur: 187275391 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.deskclock" +bucket: "foreground_app" +total_dur: 1674669994 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "cached_app" +total_dur: 510497641 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "cached_app_lmk_first" +total_dur: 56693278 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "foreground_app" +total_dur: 115664632 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.devicelockcontroller" +bucket: "visible_app" +total_dur: 1568444611 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.dialer" +bucket: "cached_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.euicc" +bucket: "visible_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.ext.services" +bucket: "visible_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.flipendo" +bucket: "cached_app" +total_dur: 2063730581 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.flipendo" +bucket: "cached_app_lmk_first" +total_dur: 56672527 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.flipendo" +bucket: "previous_app" +total_dur: 130897054 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms" +bucket: "cached_app" +total_dur: 594464397 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms" +bucket: "foreground_app" +total_dur: 1259805736 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms" +bucket: "visible_app" +total_dur: 397030029 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms.persistent" +bucket: "foreground_app" +total_dur: 2037190298 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.gms.persistent" +bucket: "visible_app" +total_dur: 214109864 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.googlequicksearchbox:interactor" +bucket: "foreground_app" +total_dur: 1185413249 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.googlequicksearchbox:interactor" +bucket: "visible_app" +total_dur: 804270091 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.googlequicksearchbox:search" +bucket: "foreground_app" +total_dur: 1467442984 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.grilservice" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.ims" +bucket: "persistent_service" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.iwlan" +bucket: "visible_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.keep" +bucket: "foreground_app" +total_dur: 576153188 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.permissioncontroller" +bucket: "cached_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.pixelsystemservice" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.providers.media.module" +bucket: "foreground_app" +total_dur: 518140177 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.providers.media.module" +bucket: "persistent_service" +total_dur: 1546461864 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.repairmode" +bucket: "cached_app" +total_dur: 2063846955 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.repairmode" +bucket: "cached_app_lmk_first" +total_dur: 187453207 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.android.youtube" +bucket: "foreground_app" +total_dur: 1450400991 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.ar.core" +bucket: "foreground_app" +total_dur: 733794515 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.ar.core" +bucket: "perceptible_low_app" +total_dur: 182198151 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.euiccpixel" +bucket: "cached_app" +total_dur: 870140371 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.euiccpixel" +bucket: "previous_app" +total_dur: 1381159791 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.google.pixel.camera.services" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.overdrive.mobile.android.libby" +bucket: "foreground_app" +total_dur: 889039012 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.patreon.android" +bucket: "foreground_app" +total_dur: 608530141 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.samsung.slsi.telephony.oem.oemrilhookservice" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.samsung.slsi.telephony.oemril" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.shannon.imsservice" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.shannon.rcsservice" +bucket: "persistent_proc" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.shannon.rcsservice:shannonrcsservice" +bucket: "previous_app" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "com.spotify.music" +bucket: "foreground_app" +total_dur: 566682160 +} +oom_adj_bucket_duration_agg_by_process { +name: "logcat" +bucket: "logcat" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "logcat" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "media.extractor" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "media.metrics" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "media.swcodec" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "org.thoughtcrime.securesms" +bucket: "foreground_app" +total_dur: 701758738 +} +oom_adj_bucket_duration_agg_by_process { +name: "org.videolan.vlc" +bucket: "foreground_app" +total_dur: 361526235 +} +oom_adj_bucket_duration_agg_by_process { +name: "perfetto" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "system_server" +bucket: "system" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "webview_zygote" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_bucket_duration_agg_by_process { +name: "zygote64" +bucket: "native" +total_dur: 2251300162 +} +oom_adj_duration_agg { +oom_adj_event_count: 0 +} +oom_adj_duration_agg { +min_oom_adj_dur: 263550 +max_oom_adj_dur: 7292196 +avg_oom_adj_dur: 3888985.6470588236 +oom_adj_event_count: 4 +oom_adj_reason: "activityChange" +} +oom_adj_duration_agg { +min_oom_adj_dur: 67180 +max_oom_adj_dur: 225871 +avg_oom_adj_dur: 171359.88888888888 +oom_adj_event_count: 6 +oom_adj_reason: "bindService" +} +oom_adj_duration_agg { +min_oom_adj_dur: 64657 +max_oom_adj_dur: 565674 +avg_oom_adj_dur: 232660.2142857143 +oom_adj_event_count: 11 +oom_adj_reason: "executingService" +} +oom_adj_duration_agg { +min_oom_adj_dur: 198120 +max_oom_adj_dur: 198120 +avg_oom_adj_dur: 198120.0 +oom_adj_event_count: 1 +oom_adj_reason: "finishReceiver" +} +oom_adj_duration_agg { +min_oom_adj_dur: 193766 +max_oom_adj_dur: 626302 +avg_oom_adj_dur: 383901.0 +oom_adj_event_count: 4 +oom_adj_reason: "getProvider" +} +oom_adj_duration_agg { +min_oom_adj_dur: 92366 +max_oom_adj_dur: 1461914 +avg_oom_adj_dur: 330079.5714285714 +oom_adj_event_count: 28 +oom_adj_reason: "processBegin" +} +oom_adj_duration_agg { +min_oom_adj_dur: 238525 +max_oom_adj_dur: 5160522 +avg_oom_adj_dur: 883870.1111111111 +oom_adj_event_count: 4 +oom_adj_reason: "startReceiver" +} +oom_adj_duration_agg { +min_oom_adj_dur: 68645 +max_oom_adj_dur: 2294270 +avg_oom_adj_dur: 618880.2 +oom_adj_event_count: 5 +oom_adj_reason: "startService" +} +oom_adj_duration_agg { +min_oom_adj_dur: 10092 +max_oom_adj_dur: 10092 +avg_oom_adj_dur: 10092.0 +oom_adj_event_count: 1 +oom_adj_reason: "uiVisibility" +} +oom_adj_duration_agg { +min_oom_adj_dur: 165242 +max_oom_adj_dur: 380290 +avg_oom_adj_dur: 272766.0 +oom_adj_event_count: 2 +oom_adj_reason: "unbindService" +} +} diff --git a/test/trace_processor/diff_tests/metrics/android/tests.py b/test/trace_processor/diff_tests/metrics/android/tests.py index 06cbe59c9..da5559ea3 100644 --- a/test/trace_processor/diff_tests/metrics/android/tests.py +++ b/test/trace_processor/diff_tests/metrics/android/tests.py @@ -303,3 +303,9 @@ class AndroidMetrics(TestSuite): } } """)) + def test_android_oom_adjuster(self): + return DiffTestBlueprint( + trace=DataPath('android_postboot_unlock.pftrace'), + query=Metric("android_oom_adjuster"), + out=Path('android_oom_adjuster.out') + ) |