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
This commit is contained in:
Narayan Kamath
2017-02-06 20:24:08 +00:00
parent 027d72ebe6
commit b49996d8e2
3 changed files with 13 additions and 1 deletions

View File

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

View File

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

View File

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