Merge "Increase the max binder thread pool size for system_server." into nyc-dev

am: 150553756f

* commit '150553756f89a51cc70b24cd9dbab4bdfba0fc59':
  Increase the max binder thread pool size for system_server.

Change-Id: I8312e28eac4b6b00b94af85d0e887448ec849652
This commit is contained in:
Tim Murray
2016-04-21 00:39:06 +00:00
committed by android-build-merger
3 changed files with 16 additions and 0 deletions

View File

@@ -93,6 +93,8 @@ public class BinderInternal {
* @hide
*/
public static final native void disableBackgroundScheduling(boolean disable);
public static final native void setMaxThreads(int numThreads);
static native final void handleGc();

View File

@@ -917,6 +917,12 @@ static void android_os_BinderInternal_disableBackgroundScheduling(JNIEnv* env,
IPCThreadState::disableBackgroundScheduling(disable ? true : false);
}
static void android_os_BinderInternal_setMaxThreads(JNIEnv* env,
jobject clazz, jint maxThreads)
{
ProcessState::self()->setThreadPoolMaxThreadCount(maxThreads);
}
static void android_os_BinderInternal_handleGc(JNIEnv* env, jobject clazz)
{
ALOGV("Gc has executed, clearing binder ops");
@@ -930,6 +936,7 @@ static const JNINativeMethod gBinderInternalMethods[] = {
{ "getContextObject", "()Landroid/os/IBinder;", (void*)android_os_BinderInternal_getContextObject },
{ "joinThreadPool", "()V", (void*)android_os_BinderInternal_joinThreadPool },
{ "disableBackgroundScheduling", "(Z)V", (void*)android_os_BinderInternal_disableBackgroundScheduling },
{ "setMaxThreads", "(I)V", (void*)android_os_BinderInternal_setMaxThreads },
{ "handleGc", "()V", (void*)android_os_BinderInternal_handleGc }
};

View File

@@ -165,6 +165,10 @@ public final class SystemServer {
private static final String UNCRYPT_PACKAGE_FILE = "/cache/recovery/uncrypt_file";
private static final String BLOCK_MAP_FILE = "/cache/recovery/block.map";
// maximum number of binder threads used for system_server
// will be higher than the system default
private static final int sMaxBinderThreads = 31;
/**
* Default theme used by the system context. This is used to style
* system-provided dialogs, such as the Power Off dialog, and other
@@ -285,6 +289,9 @@ public final class SystemServer {
// Ensure binder calls into the system always run at foreground priority.
BinderInternal.disableBackgroundScheduling(true);
// Increase the number of binder threads in system_server
BinderInternal.setMaxThreads(sMaxBinderThreads);
// Prepare the main looper thread (this thread).
android.os.Process.setThreadPriority(
android.os.Process.THREAD_PRIORITY_FOREGROUND);