diff options
| author | 2024-10-30 13:27:57 +0000 | |
|---|---|---|
| committer | 2024-10-30 13:27:57 +0000 | |
| commit | 8dcfa5caa2339cb0bb95b7fc47a14d005357a2ec (patch) | |
| tree | e6d665418bf3f2d4f912acb8ad814c79d4644366 | |
| parent | bbfd7f0e2898efe4a19d89b7a570251667cc091d (diff) | |
| parent | b7f32d074f80ba6f509d219465c4797ad18ab620 (diff) | |
Merge "Add debug.tracing.profile.* system properties" into main
| -rw-r--r-- | core/java/com/android/internal/os/ZygoteInit.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 2acda8ad71c1..e402ddfc637a 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -249,6 +249,10 @@ public class ZygoteInit { return isExperimentEnabled("profilesystemserver"); } + private static boolean shouldProfileBootClasspath() { + return isExperimentEnabled("profilebootclasspath"); + } + /** * Performs Zygote process initialization. Loads and initializes commonly used classes. * @@ -352,7 +356,7 @@ public class ZygoteInit { // If we are profiling the boot image, reset the Jit counters after preloading the // classes. We want to preload for performance, and we can use method counters to // infer what clases are used after calling resetJitCounters, for profile purposes. - if (isExperimentEnabled("profilebootclasspath")) { + if (shouldProfileBootClasspath()) { Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "ResetJitCounters"); VMRuntime.resetJitCounters(); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); @@ -460,12 +464,28 @@ public class ZygoteInit { ? String.join(":", systemServerClasspath, standaloneSystemServerJars) : systemServerClasspath; prepareSystemServerProfile(systemServerPaths); + try { + SystemProperties.set("debug.tracing.profile_system_server", "1"); + } catch (RuntimeException e) { + Slog.e(TAG, "Failed to set debug.tracing.profile_system_server", e); + } } catch (Exception e) { Log.wtf(TAG, "Failed to set up system server profile", e); } } } + // Zygote can't set system properties due to permission denied. We need to be in System + // Server to set system properties, so we do it here instead of the more natural place in + // preloadClasses. + if (shouldProfileBootClasspath()) { + try { + SystemProperties.set("debug.tracing.profile_boot_classpath", "1"); + } catch (RuntimeException e) { + Slog.e(TAG, "Failed to set debug.tracing.profile_boot_classpath", e); + } + } + if (parsedArgs.mInvokeWith != null) { String[] args = parsedArgs.mRemainingArgs; // If we have a non-null system server class path, we'll have to duplicate the |