Set cpuset from surfaceflinger.

SurfaceFlinger shouldn't be limited to little cores exclusively, as the
binder threads should be placed on big cores when they are in the
critical path for a RenderThread.

bug 25745866

Change-Id: I9fb65f6d951733f91b4735ff27018411b58b2bfb
This commit is contained in:
Tim Murray 2015-11-10 14:29:45 -08:00
parent bc9bc0e0fc
commit 392db573b3
2 changed files with 11 additions and 0 deletions

View File

@ -122,6 +122,10 @@ LOCAL_LDFLAGS := -Wl,--version-script,art/sigchainlib/version-script.txt -Wl,--e
LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\" LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\"
LOCAL_CPPFLAGS := -std=c++11 LOCAL_CPPFLAGS := -std=c++11
ifneq ($(ENABLE_CPUSETS),)
LOCAL_CFLAGS += -DENABLE_CPUSETS
endif
LOCAL_SRC_FILES := \ LOCAL_SRC_FILES := \
main_surfaceflinger.cpp main_surfaceflinger.cpp

View File

@ -41,6 +41,13 @@ int main(int, char**) {
set_sched_policy(0, SP_FOREGROUND); set_sched_policy(0, SP_FOREGROUND);
#ifdef ENABLE_CPUSETS
// Put most SurfaceFlinger threads in the system-background cpuset
// Keeps us from unnecessarily using big cores
// Do this after the binder thread pool init
set_cpuset_policy(0, SP_SYSTEM);
#endif
// initialize before clients can connect // initialize before clients can connect
flinger->init(); flinger->init();