Add reason, reason_id and launch_dur values to slow_start_reason_with_details.
bug: 308460401
test: diff_tests
Change-Id: Ibb02737a206cce589302f7753b2387d47cff8392
diff --git a/protos/perfetto/metrics/android/startup_metric.proto b/protos/perfetto/metrics/android/startup_metric.proto
index 66f01ec..4a93ebc 100644
--- a/protos/perfetto/metrics/android/startup_metric.proto
+++ b/protos/perfetto/metrics/android/startup_metric.proto
@@ -342,7 +342,7 @@
optional uint32 thread_utid = 3;
}
- // Next id: 24
+ // Next id: 25
message Startup {
// Random id uniquely identifying an app startup in this trace.
optional uint32 startup_id = 1;
@@ -424,9 +424,16 @@
// Optional.
repeated string slow_start_reason = 17;
- // Same as slow_start_reason, but with more detailed information.
+ // Same as slow_start_reason, but with more detailed information, obsolete.
repeated SlowStartReasonDetailed slow_start_reason_detailed = 21;
+ // Similar to slow_start_reason_detailed, but with much more comprehensive info.
+ // such as expected threshold, actual value and threads/slices to inspect.
+ // slow_start_reason will be obsolete once slow_start_reason_with_details is completed
+ // since slow_start_reason_with_details contains all the data in slow_start_reason
+ // and more.
+ repeated SlowStartReason slow_start_reason_with_details = 24;
+
reserved 10;
}
diff --git a/protos/perfetto/metrics/perfetto_merged_metrics.proto b/protos/perfetto/metrics/perfetto_merged_metrics.proto
index bffca26..ad2d6b2 100644
--- a/protos/perfetto/metrics/perfetto_merged_metrics.proto
+++ b/protos/perfetto/metrics/perfetto_merged_metrics.proto
@@ -2458,7 +2458,7 @@
optional uint32 thread_utid = 3;
}
- // Next id: 24
+ // Next id: 25
message Startup {
// Random id uniquely identifying an app startup in this trace.
optional uint32 startup_id = 1;
@@ -2540,9 +2540,16 @@
// Optional.
repeated string slow_start_reason = 17;
- // Same as slow_start_reason, but with more detailed information.
+ // Same as slow_start_reason, but with more detailed information, obsolete.
repeated SlowStartReasonDetailed slow_start_reason_detailed = 21;
+ // Similar to slow_start_reason_detailed, but with much more comprehensive info.
+ // such as expected threshold, actual value and threads/slices to inspect.
+ // slow_start_reason will be obsolete once slow_start_reason_with_details is completed
+ // since slow_start_reason_with_details contains all the data in slow_start_reason
+ // and more.
+ repeated SlowStartReason slow_start_reason_with_details = 24;
+
reserved 10;
}
diff --git a/python/perfetto/trace_processor/metrics.descriptor b/python/perfetto/trace_processor/metrics.descriptor
index ef13816..f212c89 100644
--- a/python/perfetto/trace_processor/metrics.descriptor
+++ b/python/perfetto/trace_processor/metrics.descriptor
Binary files differ
diff --git a/src/trace_processor/metrics/sql/android/android_startup.sql b/src/trace_processor/metrics/sql/android/android_startup.sql
index 95d050b..2e2e48e 100644
--- a/src/trace_processor/metrics/sql/android/android_startup.sql
+++ b/src/trace_processor/metrics/sql/android/android_startup.sql
@@ -514,7 +514,7 @@
)
),
- 'slow_start_reason_detailed', get_slow_start_reason_detailed(launches.startup_id)
+ 'slow_start_reason_with_details', get_slow_start_reason_with_details(launches.startup_id)
) AS startup
FROM android_startups launches;
diff --git a/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql b/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql
index 2a673c0..8108fa6 100644
--- a/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql
+++ b/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql
@@ -201,110 +201,130 @@
ORDER BY slice_dur DESC
LIMIT 1;
-
-CREATE OR REPLACE PERFETTO FUNCTION get_slow_start_reason_detailed(startup_id LONG)
+CREATE OR REPLACE PERFETTO FUNCTION get_slow_start_reason_with_details(startup_id LONG)
RETURNS PROTO AS
- SELECT RepeatedField(AndroidStartupMetric_SlowStartReasonDetailed(
+ SELECT RepeatedField(AndroidStartupMetric_SlowStartReason(
+ 'reason_id', reason_id,
'reason', slow_cause,
- 'details', details))
+ 'launch_dur', launch_dur))
FROM (
SELECT 'No baseline or cloud profiles' AS slow_cause,
- get_missing_baseline_profile_for_launch(launch.startup_id, launch.package) as details
+ launch.dur as launch_dur,
+ 'NO_BASELINE_OR_CLOUD_PROFILES' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND missing_baseline_profile_for_launch(launch.startup_id, launch.package)
UNION ALL
- SELECT 'Optimized artifacts missing, run from apk' as slow_cause, NULL as details
+ SELECT 'Optimized artifacts missing, run from apk' as slow_cause,
+ launch.dur as launch_dur,
+ 'RUN_FROM_APK' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
- AND run_from_apk_for_launch(launch.startup_id)
+ AND run_from_apk_for_launch(launch.startup_id)
UNION ALL
- SELECT 'Unlock running during launch' as slow_cause, NULL as details
+ SELECT 'Unlock running during launch' as slow_cause,
+ launch.dur as launch_dur,
+ 'UNLOCK_RUNNING' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND is_unlock_running_during_launch(launch.startup_id)
UNION ALL
- SELECT 'App in debuggable mode' as slow_cause, NULL as details
- FROM android_startups launch
+ SELECT 'App in debuggable mode' as slow_cause,
+ launch.dur as launch_dur,
+ 'APP_IN_DEBUGGABLE_MODE' as reason_id
+ FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND is_process_debuggable(launch.package)
UNION ALL
- SELECT 'GC Activity' as slow_cause, NULL as details
+ SELECT 'GC Activity' as slow_cause,
+ launch.dur as launch_dur,
+ 'GC_ACTIVITY' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND total_gc_time_by_launch(launch.startup_id) > 0
UNION ALL
- SELECT 'dex2oat running during launch' AS slow_cause, NULL as details
+ SELECT 'dex2oat running during launch' AS slow_cause,
+ launch.dur as launch_dur,
+ 'DEX2OAT_RUNNING' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id AND
dur_of_process_running_concurrent_to_launch(launch.startup_id, '*dex2oat64') > 0
UNION ALL
- SELECT 'installd running during launch' AS slow_cause, NULL as details
+ SELECT 'installd running during launch' AS slow_cause,
+ launch.dur as launch_dur,
+ 'INSTALLD_RUNNING' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id AND
dur_of_process_running_concurrent_to_launch(launch.startup_id, '*installd') > 0
UNION ALL
SELECT 'Main Thread - Time spent in Runnable state' as slow_cause,
- get_main_thread_time_for_launch_in_runnable_state(
- launch.startup_id, launch.dur) as details
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_TIME_SPENT_IN_RUNNABLE' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND main_thread_time_for_launch_in_runnable_state(launch.startup_id) > launch.dur * 0.15
UNION ALL
- SELECT 'Main Thread - Time spent in interruptible sleep state'
- AS slow_cause, NULL as details
+ SELECT 'Main Thread - Time spent in interruptible sleep state' as slow_cause,
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_TIME_SPENT_IN_INTERRUPTIBLE_SLEEP' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND main_thread_time_for_launch_and_state(launch.startup_id, 'S') > 2900e6
UNION ALL
- SELECT 'Main Thread - Time spent in Blocking I/O' as slow_cause, NULL as details
+ SELECT 'Main Thread - Time spent in Blocking I/O' as slow_cause,
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_TIME_SPENT_IN_BLOCKING_IO' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND main_thread_time_for_launch_state_and_io_wait(launch.startup_id, 'D*', TRUE) > 450e6
UNION ALL
SELECT 'Main Thread - Time spent in OpenDexFilesFromOat*' as slow_cause,
- get_android_sum_dur_on_main_thread_for_startup_and_slice(
- launch.startup_id, 'OpenDexFilesFromOat*', launch.dur) as details
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_TIME_SPENT_IN_OPEN_DEX_FILES_FROM_OAT' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id AND
android_sum_dur_on_main_thread_for_startup_and_slice(
launch.startup_id, 'OpenDexFilesFromOat*') > launch.dur * 0.2
UNION ALL
- SELECT 'Time spent in bindApplication'
- AS slow_cause, NULL as details
+ SELECT 'Time spent in bindApplication' as slow_cause,
+ launch.dur as launch_dur,
+ 'TIME_SPENT_IN_BIND_APPLICATION' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND android_sum_dur_for_startup_and_slice(launch.startup_id, 'bindApplication') > 1250e6
UNION ALL
- SELECT 'Time spent in view inflation' as slow_cause, NULL as details
+ SELECT 'Time spent in view inflation' as slow_cause,
+ launch.dur as launch_dur,
+ 'TIME_SPENT_IN_VIEW_INFLATION' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND android_sum_dur_for_startup_and_slice(launch.startup_id, 'inflate') > 450e6
UNION ALL
SELECT 'Time spent in ResourcesManager#getResources' as slow_cause,
- get_android_sum_dur_for_startup_and_slice(
- launch.startup_id, 'ResourcesManager#getResources', 130) as details
+ launch.dur as launch_dur,
+ 'TIME_SPENT_IN_RESOURCES_MANAGER_GET_RESOURCES' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND android_sum_dur_for_startup_and_slice(
launch.startup_id, 'ResourcesManager#getResources') > 130e6
UNION ALL
- SELECT 'Time spent verifying classes'
- AS slow_cause, NULL as details
+ SELECT 'Time spent verifying classes' as slow_cause,
+ launch.dur as launch_dur,
+ 'TIME_SPENT_VERIFYING_CLASSES' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id AND
android_sum_dur_for_startup_and_slice(launch.startup_id, 'VerifyClass*')
@@ -312,7 +332,8 @@
UNION ALL
SELECT 'Potential CPU contention with another process' AS slow_cause,
- get_potential_cpu_contention_with_another_process(launch.startup_id) as details
+ launch.dur as launch_dur,
+ 'POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id AND
main_thread_time_for_launch_in_runnable_state(launch.startup_id) > 100e6 AND
@@ -320,7 +341,8 @@
UNION ALL
SELECT 'JIT Activity' as slow_cause,
- get_jit_activity(launch.startup_id) as details
+ launch.dur as launch_dur,
+ 'JIT_ACTIVITY' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND thread_time_for_launch_state_and_thread(
@@ -330,8 +352,9 @@
) > 100e6
UNION ALL
- SELECT 'Main Thread - Lock contention'
- AS slow_cause, NULL as details
+ SELECT 'Main Thread - Lock contention' as slow_cause,
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_LOCK_CONTENTION' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND android_sum_dur_on_main_thread_for_startup_and_slice(
@@ -340,8 +363,9 @@
) > launch.dur * 0.2
UNION ALL
- SELECT 'Main Thread - Monitor contention'
- AS slow_cause, NULL as details
+ SELECT 'Main Thread - Monitor contention' as slow_cause,
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_MONITOR_CONTENTION' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND android_sum_dur_on_main_thread_for_startup_and_slice(
@@ -350,51 +374,55 @@
) > launch.dur * 0.15
UNION ALL
- SELECT 'JIT compiled methods' as slow_cause, NULL as details
+ SELECT 'JIT compiled methods' as slow_cause,
+ launch.dur as launch_dur,
+ 'JIT_COMPILED_METHODS' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND (
SELECT COUNT(1)
FROM ANDROID_SLICES_FOR_STARTUP_AND_SLICE_NAME(launch.startup_id, 'JIT compiling*')
- WHERE thread_name = 'Jit thread pool'
- ) > 65
+ WHERE thread_name = 'Jit thread pool') > 65
UNION ALL
- SELECT 'Broadcast dispatched count' as slow_cause, NULL as details
+ SELECT 'Broadcast dispatched count' as slow_cause,
+ launch.dur as launch_dur,
+ 'BROADCAST_DISPATCHED_COUNT' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND count_slices_concurrent_to_launch(
launch.startup_id,
- 'Broadcast dispatched*'
- ) > 15
+ 'Broadcast dispatched*') > 15
UNION ALL
- SELECT 'Broadcast received count' as slow_cause, NULL as details
+ SELECT 'Broadcast received count' as slow_cause,
+ launch.dur as launch_dur,
+ 'BROADCAST_RECEIVED_COUNT' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND count_slices_concurrent_to_launch(
launch.startup_id,
- 'broadcastReceiveReg*'
- ) > 50
+ 'broadcastReceiveReg*') > 50
UNION ALL
- SELECT 'Startup running concurrent to launch' as slow_cause, NULL as details
+ SELECT 'Startup running concurrent to launch' as slow_cause,
+ launch.dur as launch_dur,
+ 'STARTUP_RUNNING_CONCURRENT' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND EXISTS(
SELECT package
FROM android_startups l
WHERE l.startup_id != launch.startup_id
- AND _is_spans_overlapping(l.ts, l.ts_end, launch.ts, launch.ts_end)
- )
+ AND _is_spans_overlapping(l.ts, l.ts_end, launch.ts, launch.ts_end))
UNION ALL
SELECT 'Main Thread - Binder transactions blocked' as slow_cause,
- get_main_thread_binder_transactions_blocked(launch.startup_id, 2e7) as details
+ launch.dur as launch_dur,
+ 'MAIN_THREAD_BINDER_TRANSCATIONS_BLOCKED' as reason_id
FROM android_startups launch
WHERE launch.startup_id = $startup_id
AND (
SELECT COUNT(1)
- FROM BINDER_TRANSACTION_REPLY_SLICES_FOR_LAUNCH(launch.startup_id, 2e7)
- ) > 0
- );
+ FROM BINDER_TRANSACTION_REPLY_SLICES_FOR_LAUNCH(launch.startup_id, 2e7)) > 0
+ );
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup.out b/test/trace_processor/diff_tests/metrics/startup/android_startup.out
index 9dfc289..9928efb 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup.out
@@ -67,10 +67,11 @@
installd_dur_ns: 0
dex2oat_dur_ns: 0
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 74.07% [ longest_chunk: start_s 3.0e-08 dur_ms 8.0e-0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 0.0001 runnable_dur_ms 8.0e-0 R_sum_dur_ms 8.0e-0 R+(Preempted)_sum_dur_ms 0.0 ]"
- }
+ launch_dur: 108
+ }
startup_type: "warm"
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out
index 9b6e742..30a1b23 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out
@@ -134,14 +134,20 @@
slow_start_reason: "GC Activity"
slow_start_reason: "Main Thread - Time spent in OpenDexFilesFromOat*"
slow_start_reason: "Main Thread - Binder transactions blocked"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: GC_ACTIVITY
reason: "GC Activity"
+ launch_dur: 999999900
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_OPEN_DEX_FILES_FROM_OAT
reason: "Main Thread - Time spent in OpenDexFilesFromOat*"
+ launch_dur: 999999900
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_BINDER_TRANSCATIONS_BLOCKED
reason: "Main Thread - Binder transactions blocked"
+ launch_dur: 999999900
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out
index 3e8ff27..cd305f1 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out
@@ -98,15 +98,20 @@
slow_start_reason: "GC Activity"
slow_start_reason: "JIT Activity"
slow_start_reason: "JIT compiled methods"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: GC_ACTIVITY
reason: "GC Activity"
+ launch_dur: 999999900000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: JIT_ACTIVITY
reason: "JIT Activity"
- details: " target 100ms actual 20000.ms [ longest_chunk: start_s 154.99 dur_ms 10000. thread_id 4 thread_name Jit thread pool ]"
+ launch_dur: 999999900000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: JIT_COMPILED_METHODS
reason: "JIT compiled methods"
+ launch_dur: 999999900000000000
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out
index f40578d..e91c756 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out
@@ -119,26 +119,35 @@
slow_start_reason: "Time spent in bindApplication"
slow_start_reason: "Time spent in view inflation"
slow_start_reason: "Time spent in ResourcesManager#getResources"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: NO_BASELINE_OR_CLOUD_PROFILES
reason: "No baseline or cloud profiles"
- details: " target FALSE actual TRUE [ longest_chunk: start_s 154.0 dur_ms 1000.0 thread_id -1 thread_name com.google.android.calendar ] [ extra_info: slice_name location=/system/framework/oat/arm/com.google.android.calendar.odex status=up-to-date filter=speed reason=install-dm ]"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: RUN_FROM_APK
reason: "Optimized artifacts missing, run from apk"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_BIND_APPLICATION
reason: "Time spent in bindApplication"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_VIEW_INFLATION
reason: "Time spent in view inflation"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_RESOURCES_MANAGER_GET_RESOURCES
reason: "Time spent in ResourcesManager#getResources"
- details: " target 130ms actual 1000.0ms [ longest_chunk: start_s 138.0 dur_ms 1000.0 thread_id 3 thread_name com.google.android.calendar ]"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS
reason: "Potential CPU contention with another process"
- details: " target 100ms actual 5000.0ms most_active_process_for_launch init [ longest_chunk: start_s 155.0 dur_ms 5000.0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: runnable_dur_ms 5000.0 R_sum_dur_ms 5000.0 R+(Preempted)_sum_dur 0 ]"
+ launch_dur: 108000000000
}
startup_type: "cold"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out
index 891060b..bb11660 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out
@@ -118,22 +118,30 @@
slow_start_reason: "Time spent in bindApplication"
slow_start_reason: "Time spent in view inflation"
slow_start_reason: "Time spent in ResourcesManager#getResources"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: RUN_FROM_APK
reason: "Optimized artifacts missing, run from apk"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_BIND_APPLICATION
reason: "Time spent in bindApplication"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_VIEW_INFLATION
reason: "Time spent in view inflation"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_RESOURCES_MANAGER_GET_RESOURCES
reason: "Time spent in ResourcesManager#getResources"
- details: " target 130ms actual 5000.0ms [ longest_chunk: start_s 137.0 dur_ms 5000.0 thread_id 3 thread_name com.google.android.calendar ]"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS
reason: "Potential CPU contention with another process"
- details: " target 100ms actual 5000.0ms most_active_process_for_launch init [ longest_chunk: start_s 155.0 dur_ms 5000.0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: runnable_dur_ms 5000.0 R_sum_dur_ms 5000.0 R+(Preempted)_sum_dur 0 ]"
+ launch_dur: 108000000000
}
startup_type: "cold"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out
index 02e142c..7f7d68c 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out
@@ -31,11 +31,15 @@
}
slow_start_reason: "Broadcast dispatched count"
slow_start_reason: "Broadcast received count"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: BROADCAST_DISPATCHED_COUNT
reason: "Broadcast dispatched count"
+ launch_dur: 100
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: BROADCAST_RECEIVED_COUNT
reason: "Broadcast received count"
+ launch_dur: 100
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out
index 1fd7f2e..488e597 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out
@@ -62,8 +62,10 @@
dex2oat_dur_ns: 5
}
slow_start_reason: "dex2oat running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ launch_dur: 100
}
}
startup {
@@ -98,8 +100,10 @@
dex2oat_dur_ns: 0
}
slow_start_reason: "installd running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ launch_dur: 100
}
}
startup {
@@ -136,11 +140,15 @@
}
slow_start_reason: "dex2oat running during launch"
slow_start_reason: "installd running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ launch_dur: 100
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ launch_dur: 100
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out
index 91e0d5a..2cc2b16 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out
@@ -62,8 +62,10 @@
dex2oat_dur_ns: 5000000000
}
slow_start_reason: "dex2oat running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ launch_dur: 100000000000
}
}
startup {
@@ -101,14 +103,20 @@
slow_start_reason: "dex2oat running during launch"
slow_start_reason: "installd running during launch"
slow_start_reason: "Startup running concurrent to launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ launch_dur: 250000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ launch_dur: 250000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: STARTUP_RUNNING_CONCURRENT
reason: "Startup running concurrent to launch"
+ launch_dur: 250000000000
}
startup_concurrent_to_launch: "com.google.android.gm"
}
@@ -145,14 +153,20 @@
slow_start_reason: "dex2oat running during launch"
slow_start_reason: "installd running during launch"
slow_start_reason: "Startup running concurrent to launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: STARTUP_RUNNING_CONCURRENT
reason: "Startup running concurrent to launch"
+ launch_dur: 100000000000
}
startup_concurrent_to_launch: "com.google.android.deskclock"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out
index 3e5f6a6..05fc7d1 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out
@@ -72,14 +72,20 @@
slow_start_reason: "Time spent in bindApplication"
slow_start_reason: "Main Thread - Lock contention"
slow_start_reason: "Main Thread - Monitor contention"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_BIND_APPLICATION
reason: "Time spent in bindApplication"
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_LOCK_CONTENTION
reason: "Main Thread - Lock contention"
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
- reason: "Main Thread - Monitor contention"
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_MONITOR_CONTENTION
+ reason: "Main Thread - Monitor contention"
+ launch_dur: 100000000000
}
startup_type: "cold"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out
index e56ae6f..1ee29d4 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out
@@ -30,8 +30,10 @@
dex2oat_dur_ns: 0
}
slow_start_reason: "App in debuggable mode"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: APP_IN_DEBUGGABLE_MODE
reason: "App in debuggable mode"
+ launch_dur: 100
}
}
startup {
@@ -86,8 +88,10 @@
}
startup_type: "hot"
slow_start_reason: "App in debuggable mode"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: APP_IN_DEBUGGABLE_MODE
reason: "App in debuggable mode"
+ launch_dur: 10
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out
index fb10a32..efd407a 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out
@@ -66,9 +66,10 @@
dex2oat_dur_ns: 0
}
startup_type: "cold"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 57.14% [ longest_chunk: start_s 3.0e-09 dur_ms 4.0e-0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 7.0e-0 runnable_dur_ms 4.0e-0 R_sum_dur_ms 4.0e-0 R+(Preempted)_sum_dur_ms 0.0 ]"
+ launch_dur: 7
}
}
startup {
@@ -139,9 +140,10 @@
dex2oat_dur_ns: 0
}
startup_type: "cold"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 57.14% [ longest_chunk: start_s 1.03e-07 dur_ms 4.0e-0 thread_id 4 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 7.0e-0 runnable_dur_ms 4.0e-0 R_sum_dur_ms 4.0e-0 R+(Preempted)_sum_dur_ms 0.0 ]"
+ launch_dur: 7
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out
index 4cdc5e9..1b038e6 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out
@@ -70,19 +70,25 @@
startup_type: "warm"
slow_start_reason: "Main Thread - Time spent in interruptible sleep state"
slow_start_reason: "Main Thread - Time spent in Blocking I/O"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 74.07% [ longest_chunk: start_s 30.0 dur_ms 80000. thread_id 3 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 108000 runnable_dur_ms 80000. R_sum_dur_ms 80000. R+(Preempted)_sum_dur_ms 0.0 ]"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_INTERRUPTIBLE_SLEEP
reason: "Main Thread - Time spent in interruptible sleep state"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_BLOCKING_IO
reason: "Main Thread - Time spent in Blocking I/O"
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS
reason: "Potential CPU contention with another process"
- details: " target 100ms actual 80000.ms most_active_process_for_launch init [ longest_chunk: start_s 30.0 dur_ms 80000. thread_id 3 thread_name com.google.android.calendar ] [ extra_info: runnable_dur_ms 80000. R_sum_dur_ms 80000. R+(Preempted)_sum_dur 0 ]"
+ launch_dur: 108000000000
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out
index 9686456..cf87a52 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out
@@ -30,8 +30,10 @@
dex2oat_dur_ns: 0
}
slow_start_reason: "Unlock running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: UNLOCK_RUNNING
reason: "Unlock running during launch"
+ launch_dur: 100
}
}
}