Multiuser perfetto metric: omni-switch
Time user switching based on the UI entrypoint. Allow multiple different
types of entry (QuickSettings, Settings, adb).
Also increases the number of processes listed for the cpu metric.
To locally compile for testing:
tools/gen_all out/linux; tools/ninja -C out/linux
Test: out/linux/trace_processor_shell --run-metrics android_multiuser tracefile
Test: tools/diff_test_trace_processor.py out/linux/trace_processor_shell
Bug: 192001071
Change-Id: Ifdfc2939b1980f7c14e9c01610b127ab9701a9e6
diff --git a/src/trace_processor/metrics/sql/android/android_multiuser_populator.sql b/src/trace_processor/metrics/sql/android/android_multiuser_populator.sql
index 140bd36..98a4b16 100644
--- a/src/trace_processor/metrics/sql/android/android_multiuser_populator.sql
+++ b/src/trace_processor/metrics/sql/android/android_multiuser_populator.sql
@@ -22,15 +22,28 @@
{{end_event}}_time_ns AS event_end_time_ns
FROM
(
- SELECT slice.ts AS user_start_time_ns
+ SELECT MIN(slice.ts) AS user_start_time_ns
FROM slice
- WHERE (slice.name LIKE "onBeforeStartUser%")
- -- TODO: Use a signal based on SysUi so that it covers all switching, not just starting.
+ WHERE (
+ slice.name = "UserDetailView.Adapter#onClick" OR -- QuickSettings
+ slice.name = "UserDetailSettings.switchUser" OR -- Settings
+ slice.name = "shell_runSwitchUser" -- adb shell
+ )
),
(
SELECT slice.ts + slice.dur AS launcher_end_time_ns
FROM slice
WHERE (slice.name = "launching: com.google.android.apps.nexuslauncher")
+ ),
+ (
+ SELECT MIN(slice.ts) AS user_create_time_ns
+ FROM slice
+ WHERE (
+ slice.name = "UserDetailView.Adapter#onClick" OR -- QuickSettings
+ slice.name = "UserSettings.addUserNow" OR -- Settings
+ slice.name = "UserSettings.addGuest" OR -- Settings
+ slice.name = "shell_runCreateUser" -- adb shell
+ )
);
-- Calculation of the duration of the Multiuser event of interest.
@@ -93,7 +106,7 @@
cpu_kcycles / (SELECT SUM(cpu_kcycles) FROM cpu_usage_all) * 100 AS cpu_percentage
FROM
cpu_usage_all
-ORDER BY cpu_mcycles DESC LIMIT 6;
+ORDER BY cpu_mcycles DESC LIMIT 25;
-- Record the output for populating the proto.
diff --git a/test/trace_processor/parsing/android_multiuser_switch.textproto b/test/trace_processor/parsing/android_multiuser_switch.textproto
index 223ddb6..4798139 100644
--- a/test/trace_processor/parsing/android_multiuser_switch.textproto
+++ b/test/trace_processor/parsing/android_multiuser_switch.textproto
@@ -5,7 +5,7 @@
timestamp: 3000000000 # 3e9
pid: 4064
print {
- buf: "S|1204|onBeforeStartUser-10|0\n"
+ buf: "S|1204|UserDetailView.Adapter#onClick|0\n"
}
}
}
@@ -17,7 +17,7 @@
timestamp: 3100000000
pid: 4064
print {
- buf: "F|1204|onBeforeStartUser-10|0\n"
+ buf: "F|1204|UserDetailView.Adapter#onClick|0\n"
}
}
}