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:
@@ -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();
|
||||
|
||||
|
||||
@@ -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 }
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user