From 20f950e74d8b2daf22a04a7fcbe35563841f512a Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Tue, 2 Aug 2022 18:17:58 +0100 Subject: [PATCH] Add trace logs for UserController#dispatchUserSwitchComplete. To track how long it takes for each mUserSwitchObservers to process IUserSwitchObserver#onUserSwitchComplete call and when that happens. Bug: 239497256 Test: atest MultiUserPerfTests:android.multiuser.UserLifecycleTests#switchUser_stopped --no-bazel-mode Change-Id: I9c618b6bb2247d93f624a8f9b9351608d4579000 --- .../core/java/com/android/server/am/UserController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index e4224edac7904..0c0ae7d8f9348 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -1872,15 +1872,21 @@ class UserController implements Handler.Callback { /** Called on handler thread */ @VisibleForTesting void dispatchUserSwitchComplete(@UserIdInt int userId) { + final TimingsTraceAndSlog t = new TimingsTraceAndSlog(); + t.traceBegin("dispatchUserSwitchComplete-" + userId); mInjector.getWindowManager().setSwitchingUser(false); final int observerCount = mUserSwitchObservers.beginBroadcast(); for (int i = 0; i < observerCount; i++) { try { + t.traceBegin("onUserSwitchComplete-" + userId + " #" + i + " " + + mUserSwitchObservers.getBroadcastCookie(i)); mUserSwitchObservers.getBroadcastItem(i).onUserSwitchComplete(userId); + t.traceEnd(); } catch (RemoteException e) { } } mUserSwitchObservers.finishBroadcast(); + t.traceEnd(); } private void dispatchLockedBootComplete(@UserIdInt int userId) {