am ffd8889a: am f76806a9: Merge "Add boost to increase the load on newly-forked zygote processes." into mnc-dr-dev

* commit 'ffd8889a96db0dadf01f6dfcd9393910d491fb91':
  Add boost to increase the load on newly-forked zygote processes.
This commit is contained in:
Tim Murray
2015-08-05 23:26:16 +00:00
committed by Android Git Automerger
2 changed files with 35 additions and 0 deletions

View File

@@ -20,6 +20,10 @@ ifneq ($(ENABLE_CPUSETS),)
LOCAL_CFLAGS += -DENABLE_CPUSETS
endif
ifneq ($(ENABLE_SCHED_BOOST),)
LOCAL_CFLAGS += -DENABLE_SCHED_BOOST
endif
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
LOCAL_CFLAGS += -DU_USING_ICU_NAMESPACE=0

View File

@@ -408,6 +408,27 @@ void SetThreadName(const char* thread_name) {
}
}
#ifdef ENABLE_SCHED_BOOST
static void SetForkLoad(bool boost) {
// set scheduler knob to boost forked processes
pid_t currentPid = getpid();
// fits at most "/proc/XXXXXXX/sched_init_task_load\0"
char schedPath[35];
snprintf(schedPath, sizeof(schedPath), "/proc/%u/sched_init_task_load", currentPid);
int schedBoostFile = open(schedPath, O_WRONLY);
if (schedBoostFile < 0) {
ALOGW("Unable to set zygote scheduler boost");
return;
}
if (boost) {
write(schedBoostFile, "100\0", 4);
} else {
write(schedBoostFile, "0\0", 2);
}
close(schedBoostFile);
}
#endif
// Utility routine to fork zygote and specialize the child process.
static pid_t ForkAndSpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArray javaGids,
jint debug_flags, jobjectArray javaRlimits,
@@ -418,6 +439,10 @@ static pid_t ForkAndSpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArra
jstring instructionSet, jstring dataDir) {
SetSigChldHandler();
#ifdef ENABLE_SCHED_BOOST
SetForkLoad(true);
#endif
pid_t pid = fork();
if (pid == 0) {
@@ -558,6 +583,12 @@ static pid_t ForkAndSpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArra
}
} else if (pid > 0) {
// the parent process
#ifdef ENABLE_SCHED_BOOST
// unset scheduler knob
SetForkLoad(false);
#endif
}
return pid;
}