am 275294db: Merge "Better systrace slices for application startup." into mnc-dev
* commit '275294dbce30eb1f9ef4847d0f9c3d6b602de06c': Better systrace slices for application startup.
This commit is contained in:
@@ -90,9 +90,6 @@ public:
|
||||
|
||||
virtual void onZygoteInit()
|
||||
{
|
||||
// Re-enable tracing now that we're no longer in Zygote.
|
||||
atrace_set_tracing_enabled(true);
|
||||
|
||||
sp<ProcessState> proc = ProcessState::self();
|
||||
ALOGV("App process: starting thread pool.\n");
|
||||
proc->startThreadPool();
|
||||
|
||||
@@ -5375,6 +5375,7 @@ public final class ActivityThread {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");
|
||||
SamplingProfilerIntegration.start();
|
||||
|
||||
// CloseGuard defaults to true and can be quite spammy. We
|
||||
@@ -5409,6 +5410,8 @@ public final class ActivityThread {
|
||||
LogPrinter(Log.DEBUG, "ActivityThread"));
|
||||
}
|
||||
|
||||
// End of event ActivityThreadMain.
|
||||
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
||||
Looper.loop();
|
||||
|
||||
throw new RuntimeException("Main thread loop unexpectedly exited");
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.os.Debug;
|
||||
import android.os.IBinder;
|
||||
import android.os.Process;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.Trace;
|
||||
import android.util.Log;
|
||||
import android.util.Slog;
|
||||
import com.android.internal.logging.AndroidConfig;
|
||||
@@ -269,11 +270,11 @@ public class RuntimeInit {
|
||||
throws ZygoteInit.MethodAndArgsCaller {
|
||||
if (DEBUG) Slog.d(TAG, "RuntimeInit: Starting application from zygote");
|
||||
|
||||
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "RuntimeInit");
|
||||
redirectLogStreams();
|
||||
|
||||
commonInit();
|
||||
nativeZygoteInit();
|
||||
|
||||
applicationInit(targetSdkVersion, argv, classLoader);
|
||||
}
|
||||
|
||||
@@ -318,6 +319,9 @@ public class RuntimeInit {
|
||||
return;
|
||||
}
|
||||
|
||||
// The end of of the RuntimeInit event (see #zygoteInit).
|
||||
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
||||
|
||||
// Remaining arguments are passed to the start class's static main
|
||||
invokeStaticMain(args.startClass, args.startArgs, classLoader);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.internal.os;
|
||||
|
||||
|
||||
import android.os.Trace;
|
||||
import dalvik.system.ZygoteHooks;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.Os;
|
||||
@@ -88,6 +89,13 @@ public final class Zygote {
|
||||
int pid = nativeForkAndSpecialize(
|
||||
uid, gid, gids, debugFlags, rlimits, mountExternal, seInfo, niceName, fdsToClose,
|
||||
instructionSet, appDataDir);
|
||||
// Enable tracing as soon as possible for the child process.
|
||||
if (pid == 0) {
|
||||
Trace.setTracingEnabled(true);
|
||||
|
||||
// Note that this event ends at the end of handleChildProc,
|
||||
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "PostFork");
|
||||
}
|
||||
VM_HOOKS.postForkCommon();
|
||||
return pid;
|
||||
}
|
||||
@@ -124,6 +132,10 @@ public final class Zygote {
|
||||
VM_HOOKS.preFork();
|
||||
int pid = nativeForkSystemServer(
|
||||
uid, gid, gids, debugFlags, rlimits, permittedCapabilities, effectiveCapabilities);
|
||||
// Enable tracing as soon as we enter the system_server.
|
||||
if (pid == 0) {
|
||||
Trace.setTracingEnabled(true);
|
||||
}
|
||||
VM_HOOKS.postForkCommon();
|
||||
return pid;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.net.LocalSocket;
|
||||
import android.os.Process;
|
||||
import android.os.SELinux;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.Trace;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.Os;
|
||||
import android.util.Log;
|
||||
@@ -711,7 +712,6 @@ class ZygoteConnection {
|
||||
private void handleChildProc(Arguments parsedArgs,
|
||||
FileDescriptor[] descriptors, FileDescriptor pipeFd, PrintStream newStderr)
|
||||
throws ZygoteInit.MethodAndArgsCaller {
|
||||
|
||||
/**
|
||||
* By the time we get here, the native code has closed the two actual Zygote
|
||||
* socket connections, and substituted /dev/null in their place. The LocalSocket
|
||||
@@ -740,6 +740,8 @@ class ZygoteConnection {
|
||||
Process.setArgV0(parsedArgs.niceName);
|
||||
}
|
||||
|
||||
// End of the postFork event.
|
||||
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
||||
if (parsedArgs.invokeWith != null) {
|
||||
WrapperInit.execApplication(parsedArgs.invokeWith,
|
||||
parsedArgs.niceName, parsedArgs.targetSdkVersion,
|
||||
|
||||
Reference in New Issue
Block a user