diff options
| -rw-r--r-- | core/jni/android_util_Process.cpp | 22 | ||||
| -rw-r--r-- | core/jni/com_android_internal_os_Zygote.cpp | 11 | ||||
| -rw-r--r-- | media/jni/Android.bp | 3 |
3 files changed, 20 insertions, 16 deletions
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index 978254175da4..32ddad1791f2 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -346,30 +346,34 @@ static void parse_cpuset_cpus(char *cpus, cpu_set_t *cpu_set) { static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set) { FILE *file; - const char *filename; + std::string filename; CPU_ZERO(cpu_set); switch (policy) { case SP_BACKGROUND: - filename = "/dev/cpuset/background/cpus"; + if (!CgroupGetAttributePath("LowCapacityCPUs", &filename)) { + return; + } break; case SP_FOREGROUND: case SP_AUDIO_APP: case SP_AUDIO_SYS: case SP_RT_APP: - filename = "/dev/cpuset/foreground/cpus"; + if (!CgroupGetAttributePath("HighCapacityCPUs", &filename)) { + return; + } break; case SP_TOP_APP: - filename = "/dev/cpuset/top-app/cpus"; + if (!CgroupGetAttributePath("MaxCapacityCPUs", &filename)) { + return; + } break; default: - filename = NULL; + return; } - if (!filename) return; - - file = fopen(filename, "re"); + file = fopen(filename.c_str(), "re"); if (file != NULL) { // Parse cpus string char *line = NULL; @@ -379,7 +383,7 @@ static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set) if (num_read > 0) { parse_cpuset_cpus(line, cpu_set); } else { - ALOGE("Failed to read %s", filename); + ALOGE("Failed to read %s", filename.c_str()); } free(line); } diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index 1448d7b97eb1..3012c906df7b 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -1305,15 +1305,12 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer( RuntimeAbort(env, __LINE__, "System server process has died. Restarting Zygote!"); } - bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); - bool per_app_memcg = GetBoolProperty("ro.config.per_app_memcg", low_ram_device); - if (per_app_memcg) { + if (UsePerAppMemcg()) { // Assign system_server to the correct memory cgroup. - // Not all devices mount /dev/memcg so check for the file first + // Not all devices mount memcg so check if it is mounted first // to avoid unnecessarily printing errors and denials in the logs. - if (!access("/dev/memcg/system/tasks", F_OK) && - !WriteStringToFile(StringPrintf("%d", pid), "/dev/memcg/system/tasks")) { - ALOGE("couldn't write %d to /dev/memcg/system/tasks", pid); + if (!SetTaskProfiles(pid, std::vector<std::string>{"SystemMemoryProcess"})) { + ALOGE("couldn't add process %d into system memcg group", pid); } } } diff --git a/media/jni/Android.bp b/media/jni/Android.bp index 4c563dbbe979..25c7b5cc5cd6 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -51,6 +51,7 @@ cc_library_shared { "libmtp", "libexif", "libpiex", + "libprocessgroup", "libandroidfw", "libhidlallocatorutils", "libhidlbase", @@ -131,6 +132,7 @@ cc_library_shared { "libcutils", "libdexfile", "liblzma", + "libjsoncpp", "libmedia_helper", "libmedia_player2_util", "libmediadrm", @@ -140,6 +142,7 @@ cc_library_shared { "libmediautils", "libnativehelper", "libnetd_client", + "libprocessgroup", "libstagefright_esds", "libstagefright_foundation", "libstagefright_httplive", |