From ed30689e2190b19641db6cef664eb32d2f7cf0e0 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 5 Dec 2019 09:55:36 -0800 Subject: [PATCH] DO NOT MERGE - Use TimingsTraceLog on SystemServiceManager and VoiceInteractionManagerService. (NOTE: this change is manually cherry-picked from master - master has the same trace calls, but they were introduced by larger changes) Bug: 145626101 Bug: 145027829 Test: manual verification Change-Id: I5cae10c9c7e5ed6f733c72659643708dfa826fc7 --- .../android/server/SystemServiceManager.java | 41 ++++++++++++------- .../VoiceInteractionManagerService.java | 25 ++++++++++- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/services/core/java/com/android/server/SystemServiceManager.java b/services/core/java/com/android/server/SystemServiceManager.java index c5b4966ddcf27..3df585e4b8664 100644 --- a/services/core/java/com/android/server/SystemServiceManager.java +++ b/services/core/java/com/android/server/SystemServiceManager.java @@ -22,6 +22,7 @@ import android.os.Environment; import android.os.SystemClock; import android.os.Trace; import android.util.Slog; +import android.util.TimingsTraceLog; import java.io.File; import java.lang.reflect.Constructor; @@ -178,12 +179,13 @@ public class SystemServiceManager { } public void startUser(final int userHandle) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("ssm.startUser-" + userHandle); Slog.i(TAG, "Calling onStartUser u" + userHandle); final int serviceLen = mServices.size(); for (int i = 0; i < serviceLen; i++) { final SystemService service = mServices.get(i); - Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onStartUser " - + service.getClass().getName()); + t.traceBegin("onStartUser-" + userHandle + " " + service.getClass().getName()); long time = SystemClock.elapsedRealtime(); try { service.onStartUser(userHandle); @@ -192,17 +194,19 @@ public class SystemServiceManager { + " to service " + service.getClass().getName(), ex); } warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStartUser "); - Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceEnd(); } + t.traceEnd(); } public void unlockUser(final int userHandle) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("ssm.unlockUser-" + userHandle); Slog.i(TAG, "Calling onUnlockUser u" + userHandle); final int serviceLen = mServices.size(); for (int i = 0; i < serviceLen; i++) { final SystemService service = mServices.get(i); - Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onUnlockUser " - + service.getClass().getName()); + t.traceBegin("onUnlockUser-" + userHandle + " " + service.getClass().getName()); long time = SystemClock.elapsedRealtime(); try { service.onUnlockUser(userHandle); @@ -211,17 +215,19 @@ public class SystemServiceManager { + " to service " + service.getClass().getName(), ex); } warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onUnlockUser "); - Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceEnd(); } + t.traceEnd(); } public void switchUser(final int userHandle) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("ssm.switchUser-" + userHandle); Slog.i(TAG, "Calling switchUser u" + userHandle); final int serviceLen = mServices.size(); for (int i = 0; i < serviceLen; i++) { final SystemService service = mServices.get(i); - Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onSwitchUser " - + service.getClass().getName()); + t.traceBegin("onSwitchUser-" + userHandle + " " + service.getClass().getName()); long time = SystemClock.elapsedRealtime(); try { service.onSwitchUser(userHandle); @@ -230,17 +236,19 @@ public class SystemServiceManager { + " to service " + service.getClass().getName(), ex); } warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onSwitchUser"); - Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceEnd(); } + t.traceEnd(); } public void stopUser(final int userHandle) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("ssm.stopUser-" + userHandle); Slog.i(TAG, "Calling onStopUser u" + userHandle); final int serviceLen = mServices.size(); for (int i = 0; i < serviceLen; i++) { final SystemService service = mServices.get(i); - Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onStopUser " - + service.getClass().getName()); + t.traceBegin("onStopUser-" + userHandle + " " + service.getClass().getName()); long time = SystemClock.elapsedRealtime(); try { service.onStopUser(userHandle); @@ -249,17 +257,19 @@ public class SystemServiceManager { + " to service " + service.getClass().getName(), ex); } warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStopUser"); - Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceEnd(); } + t.traceEnd(); } public void cleanupUser(final int userHandle) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("ssm.cleanupUser-" + userHandle); Slog.i(TAG, "Calling onCleanupUser u" + userHandle); final int serviceLen = mServices.size(); for (int i = 0; i < serviceLen; i++) { final SystemService service = mServices.get(i); - Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onCleanupUser " - + service.getClass().getName()); + t.traceBegin("onCleanupUser-" + userHandle + " " + service.getClass().getName()); long time = SystemClock.elapsedRealtime(); try { service.onCleanupUser(userHandle); @@ -268,8 +278,9 @@ public class SystemServiceManager { + " to service " + service.getClass().getName(), ex); } warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onCleanupUser"); - Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceEnd(); } + t.traceEnd(); } /** Sets the safe mode flag for services to query. */ diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 46d7509b43caa..0b1c07b9ee438 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -20,6 +20,7 @@ import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.AppGlobals; @@ -51,6 +52,7 @@ import android.os.Parcel; import android.os.RemoteCallback; import android.os.RemoteCallbackList; import android.os.RemoteException; +import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; @@ -65,6 +67,7 @@ import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.util.Slog; +import android.util.TimingsTraceLog; import com.android.internal.app.IVoiceActionCheckCallback; import com.android.internal.app.IVoiceInteractionManagerService; @@ -269,7 +272,17 @@ public class VoiceInteractionManagerService extends SystemService { } } - public void initForUser(int userHandle) { + public void initForUser(@UserIdInt int userHandle) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("initForUser(" + userHandle + ")"); + try { + initForUserNoTracing(userHandle); + } finally { + t.traceEnd(); + } + } + + private void initForUserNoTracing(@UserIdInt int userHandle) { if (DEBUG) Slog.d(TAG, "**************** initForUser user=" + userHandle); String curInteractorStr = Settings.Secure.getStringForUser( mContext.getContentResolver(), @@ -426,6 +439,16 @@ public class VoiceInteractionManagerService extends SystemService { } void switchImplementationIfNeededLocked(boolean force) { + final TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + t.traceBegin("switchImplementation(" + mCurUser + ")"); + try { + switchImplementationIfNeededNoTracingLocked(force); + } finally { + t.traceEnd(); + } + } + + void switchImplementationIfNeededNoTracingLocked(boolean force) { if (!mSafeMode) { String curService = Settings.Secure.getStringForUser( mResolver, Settings.Secure.VOICE_INTERACTION_SERVICE, mCurUser);