Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b49996d8 authored by Narayan Kamath's avatar Narayan Kamath
Browse files

Zygote: Reset niceness if lazy preloading is enabled.

By definition, the zygote in question is lower priority if lazy
preloading is enabled. We therefore reset the zygote process'
niceness to 0 as soon as it comes up, rather than having it stick
around as a higher priority process until we eventually ask it
to load the default set of resources.

Test: manual.

Change-Id: I3ccfc0e7c3fdebf5f798d90b53140a554bf64c20
parent 027d72eb
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -173,6 +173,10 @@ public final class Zygote {
        VM_HOOKS.postForkChild(debugFlags, isSystemServer, instructionSet);
    }

    /**
     * Resets this process' priority to the default value (0).
     */
    native static void nativeResetNicePriority();

    /**
     * Executes "/system/bin/sh -c <command>" using the exec() system call.
+2 −0
Original line number Diff line number Diff line
@@ -712,6 +712,8 @@ public class ZygoteInit {
                EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_END,
                    SystemClock.uptimeMillis());
                bootTimingsTraceLog.traceEnd(); // ZygotePreload
            } else {
                Zygote.nativeResetNicePriority();
            }

            // Finish profiling the zygote initialization.
+7 −1
Original line number Diff line number Diff line
@@ -806,6 +806,10 @@ static void com_android_internal_os_Zygote_nativeUnmountStorageOnInit(JNIEnv* en
    UnmountTree("/storage");
}

static void com_android_internal_os_Zygote_nativeResetNicePriority(JNIEnv* env, jclass) {
    ResetNicePriority(env);
}

static const JNINativeMethod gMethods[] = {
    { "nativeForkAndSpecialize",
      "(II[II[[IILjava/lang/String;Ljava/lang/String;[I[ILjava/lang/String;Ljava/lang/String;)I",
@@ -815,7 +819,9 @@ static const JNINativeMethod gMethods[] = {
    { "nativeAllowFileAcrossFork", "(Ljava/lang/String;)V",
      (void *) com_android_internal_os_Zygote_nativeAllowFileAcrossFork },
    { "nativeUnmountStorageOnInit", "()V",
      (void *) com_android_internal_os_Zygote_nativeUnmountStorageOnInit }
      (void *) com_android_internal_os_Zygote_nativeUnmountStorageOnInit },
    { "nativeResetNicePriority", "()V",
      (void *) com_android_internal_os_Zygote_nativeResetNicePriority }
};

int register_com_android_internal_os_Zygote(JNIEnv* env) {