summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vali Dobrota <dobrota@google.com> 2024-10-30 13:27:57 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-10-30 13:27:57 +0000
commit8dcfa5caa2339cb0bb95b7fc47a14d005357a2ec (patch)
treee6d665418bf3f2d4f912acb8ad814c79d4644366
parentbbfd7f0e2898efe4a19d89b7a570251667cc091d (diff)
parentb7f32d074f80ba6f509d219465c4797ad18ab620 (diff)
Merge "Add debug.tracing.profile.* system properties" into main
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java22
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