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
This commit is contained in:
Felipe Leme
2019-12-05 09:55:36 -08:00
parent fcfca21b9f
commit ed30689e21
2 changed files with 50 additions and 16 deletions

View File

@@ -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. */

View File

@@ -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);