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:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user