Merge "Increase the max binder thread pool size for system_server." into nyc-dev
This commit is contained in:
@@ -93,6 +93,8 @@ public class BinderInternal {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public static final native void disableBackgroundScheduling(boolean disable);
|
public static final native void disableBackgroundScheduling(boolean disable);
|
||||||
|
|
||||||
|
public static final native void setMaxThreads(int numThreads);
|
||||||
|
|
||||||
static native final void handleGc();
|
static native final void handleGc();
|
||||||
|
|
||||||
|
|||||||
@@ -917,6 +917,12 @@ static void android_os_BinderInternal_disableBackgroundScheduling(JNIEnv* env,
|
|||||||
IPCThreadState::disableBackgroundScheduling(disable ? true : false);
|
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)
|
static void android_os_BinderInternal_handleGc(JNIEnv* env, jobject clazz)
|
||||||
{
|
{
|
||||||
ALOGV("Gc has executed, clearing binder ops");
|
ALOGV("Gc has executed, clearing binder ops");
|
||||||
@@ -930,6 +936,7 @@ static const JNINativeMethod gBinderInternalMethods[] = {
|
|||||||
{ "getContextObject", "()Landroid/os/IBinder;", (void*)android_os_BinderInternal_getContextObject },
|
{ "getContextObject", "()Landroid/os/IBinder;", (void*)android_os_BinderInternal_getContextObject },
|
||||||
{ "joinThreadPool", "()V", (void*)android_os_BinderInternal_joinThreadPool },
|
{ "joinThreadPool", "()V", (void*)android_os_BinderInternal_joinThreadPool },
|
||||||
{ "disableBackgroundScheduling", "(Z)V", (void*)android_os_BinderInternal_disableBackgroundScheduling },
|
{ "disableBackgroundScheduling", "(Z)V", (void*)android_os_BinderInternal_disableBackgroundScheduling },
|
||||||
|
{ "setMaxThreads", "(I)V", (void*)android_os_BinderInternal_setMaxThreads },
|
||||||
{ "handleGc", "()V", (void*)android_os_BinderInternal_handleGc }
|
{ "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 UNCRYPT_PACKAGE_FILE = "/cache/recovery/uncrypt_file";
|
||||||
private static final String BLOCK_MAP_FILE = "/cache/recovery/block.map";
|
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
|
* Default theme used by the system context. This is used to style
|
||||||
* system-provided dialogs, such as the Power Off dialog, and other
|
* 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.
|
// Ensure binder calls into the system always run at foreground priority.
|
||||||
BinderInternal.disableBackgroundScheduling(true);
|
BinderInternal.disableBackgroundScheduling(true);
|
||||||
|
|
||||||
|
// Increase the number of binder threads in system_server
|
||||||
|
BinderInternal.setMaxThreads(sMaxBinderThreads);
|
||||||
|
|
||||||
// Prepare the main looper thread (this thread).
|
// Prepare the main looper thread (this thread).
|
||||||
android.os.Process.setThreadPriority(
|
android.os.Process.setThreadPriority(
|
||||||
android.os.Process.THREAD_PRIORITY_FOREGROUND);
|
android.os.Process.THREAD_PRIORITY_FOREGROUND);
|
||||||
|
|||||||
Reference in New Issue
Block a user