Loading libprocessgroup/include/processgroup/sched_policy.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ typedef enum { SP_TOP_APP = 5, SP_TOP_APP = 5, SP_RT_APP = 6, SP_RT_APP = 6, SP_RESTRICTED = 7, SP_RESTRICTED = 7, SP_FOREGROUND_WINDOW = 8, SP_CNT, SP_CNT, SP_MAX = SP_CNT - 1, SP_MAX = SP_CNT - 1, SP_SYSTEM_DEFAULT = SP_FOREGROUND, SP_SYSTEM_DEFAULT = SP_FOREGROUND, Loading libprocessgroup/profiles/task_profiles.json +39 −0 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,11 @@ "Controller": "cpuset", "Controller": "cpuset", "File": "foreground/cpus" "File": "foreground/cpus" }, }, { "Name": "HighCapacityWICPUs", "Controller": "cpuset", "File": "foreground_window/cpus" }, { { "Name": "MaxCapacityCPUs", "Name": "MaxCapacityCPUs", "Controller": "cpuset", "Controller": "cpuset", Loading Loading @@ -158,6 +163,19 @@ } } ] ] }, }, { "Name": "HighPerformanceWI", "Actions": [ { "Name": "JoinCgroup", "Params": { "Controller": "cpu", "Path": "foreground_window" } } ] }, { { "Name": "MaxPerformance", "Name": "MaxPerformance", "Actions": [ "Actions": [ Loading Loading @@ -381,6 +399,19 @@ } } ] ] }, }, { "Name": "ProcessCapacityHighWI", "Actions": [ { "Name": "JoinCgroup", "Params": { "Controller": "cpuset", "Path": "foreground_window" } } ] }, { { "Name": "ProcessCapacityMax", "Name": "ProcessCapacityMax", "Actions": [ "Actions": [ Loading Loading @@ -638,6 +669,10 @@ "Name": "SCHED_SP_FOREGROUND", "Name": "SCHED_SP_FOREGROUND", "Profiles": [ "HighPerformance", "HighIoPriority", "TimerSlackNormal" ] "Profiles": [ "HighPerformance", "HighIoPriority", "TimerSlackNormal" ] }, }, { "Name": "SCHED_SP_FOREGROUND_WINDOW", "Profiles": [ "HighPerformanceWI", "HighIoPriority", "TimerSlackNormal" ] }, { { "Name": "SCHED_SP_TOP_APP", "Name": "SCHED_SP_TOP_APP", "Profiles": [ "MaxPerformance", "MaxIoPriority", "TimerSlackNormal" ] "Profiles": [ "MaxPerformance", "MaxIoPriority", "TimerSlackNormal" ] Loading Loading @@ -666,6 +701,10 @@ "Name": "CPUSET_SP_FOREGROUND", "Name": "CPUSET_SP_FOREGROUND", "Profiles": [ "HighPerformance", "ProcessCapacityHigh", "HighIoPriority", "TimerSlackNormal" ] "Profiles": [ "HighPerformance", "ProcessCapacityHigh", "HighIoPriority", "TimerSlackNormal" ] }, }, { "Name": "CPUSET_SP_FOREGROUND_WINDOW", "Profiles": [ "HighPerformanceWI", "ProcessCapacityHighWI", "HighIoPriority", "TimerSlackNormal" ] }, { { "Name": "CPUSET_SP_TOP_APP", "Name": "CPUSET_SP_TOP_APP", "Profiles": [ "MaxPerformance", "ProcessCapacityMax", "MaxIoPriority", "TimerSlackNormal" ] "Profiles": [ "MaxPerformance", "ProcessCapacityMax", "MaxIoPriority", "TimerSlackNormal" ] Loading libprocessgroup/sched_policy.cpp +22 −9 Original line number Original line Diff line number Diff line Loading @@ -58,6 +58,8 @@ int set_cpuset_policy(pid_t tid, SchedPolicy policy) { return SetTaskProfiles(tid, {"CPUSET_SP_SYSTEM"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"CPUSET_SP_SYSTEM"}, true) ? 0 : -1; case SP_RESTRICTED: case SP_RESTRICTED: return SetTaskProfiles(tid, {"CPUSET_SP_RESTRICTED"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"CPUSET_SP_RESTRICTED"}, true) ? 0 : -1; case SP_FOREGROUND_WINDOW: return SetTaskProfiles(tid, {"CPUSET_SP_FOREGROUND_WINDOW"}, true) ? 0 : -1; default: default: break; break; } } Loading Loading @@ -110,6 +112,9 @@ int set_sched_policy(pid_t tid, SchedPolicy policy) { case SP_RT_APP: case SP_RT_APP: SLOGD("RT tid %d (%s)", tid, thread_name); SLOGD("RT tid %d (%s)", tid, thread_name); break; break; case SP_FOREGROUND_WINDOW: SLOGD("WI tid %d (%s)", tid, thread_name); break; default: default: SLOGD("??? tid %d (%s)", tid, thread_name); SLOGD("??? tid %d (%s)", tid, thread_name); break; break; Loading @@ -129,6 +134,8 @@ int set_sched_policy(pid_t tid, SchedPolicy policy) { return SetTaskProfiles(tid, {"SCHED_SP_SYSTEM"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"SCHED_SP_SYSTEM"}, true) ? 0 : -1; case SP_RT_APP: case SP_RT_APP: return SetTaskProfiles(tid, {"SCHED_SP_RT_APP"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"SCHED_SP_RT_APP"}, true) ? 0 : -1; case SP_FOREGROUND_WINDOW: return SetTaskProfiles(tid, {"SCHED_SP_FOREGROUND_WINDOW"}, true) ? 0 : -1; default: default: return SetTaskProfiles(tid, {"SCHED_SP_DEFAULT"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"SCHED_SP_DEFAULT"}, true) ? 0 : -1; } } Loading Loading @@ -179,6 +186,8 @@ static int get_sched_policy_from_group(const std::string& group, SchedPolicy* po *policy = SP_TOP_APP; *policy = SP_TOP_APP; } else if (group == "restricted") { } else if (group == "restricted") { *policy = SP_RESTRICTED; *policy = SP_RESTRICTED; } else if (group == "foreground_window") { *policy = SP_FOREGROUND_WINDOW; } else { } else { errno = ERANGE; errno = ERANGE; return -1; return -1; Loading Loading @@ -235,7 +244,7 @@ const char* get_sched_policy_name(SchedPolicy policy) { static const char* const kSchedPolicyNames[] = { static const char* const kSchedPolicyNames[] = { [SP_BACKGROUND] = "bg", [SP_FOREGROUND] = "fg", [SP_SYSTEM] = " ", [SP_BACKGROUND] = "bg", [SP_FOREGROUND] = "fg", [SP_SYSTEM] = " ", [SP_AUDIO_APP] = "aa", [SP_AUDIO_SYS] = "as", [SP_TOP_APP] = "ta", [SP_AUDIO_APP] = "aa", [SP_AUDIO_SYS] = "as", [SP_TOP_APP] = "ta", [SP_RT_APP] = "rt", [SP_RESTRICTED] = "rs", [SP_RT_APP] = "rt", [SP_RESTRICTED] = "rs", [SP_FOREGROUND_WINDOW] = "wi", }; }; static_assert(arraysize(kSchedPolicyNames) == SP_CNT, "missing name"); static_assert(arraysize(kSchedPolicyNames) == SP_CNT, "missing name"); if (policy < SP_BACKGROUND || policy >= SP_CNT) { if (policy < SP_BACKGROUND || policy >= SP_CNT) { Loading @@ -249,14 +258,16 @@ const char* get_cpuset_policy_profile_name(SchedPolicy policy) { * cpuset profile array for: * cpuset profile array for: * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7) * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7), * SP_FOREGROUND_WINDOW(8) * index is policy + 1 * index is policy + 1 * this need keep in sync with SchedPolicy enum * this need keep in sync with SchedPolicy enum */ */ static constexpr const char* kCpusetProfiles[SP_CNT + 1] = { static constexpr const char* kCpusetProfiles[SP_CNT + 1] = { "CPUSET_SP_DEFAULT", "CPUSET_SP_BACKGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_DEFAULT", "CPUSET_SP_BACKGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_SYSTEM", "CPUSET_SP_FOREGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_SYSTEM", "CPUSET_SP_FOREGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_TOP_APP", "CPUSET_SP_DEFAULT", "CPUSET_SP_RESTRICTED"}; "CPUSET_SP_TOP_APP", "CPUSET_SP_DEFAULT", "CPUSET_SP_RESTRICTED", "CPUSET_SP_FOREGROUND_WINDOW"}; if (policy < SP_DEFAULT || policy >= SP_CNT) { if (policy < SP_DEFAULT || policy >= SP_CNT) { return nullptr; return nullptr; } } Loading @@ -268,14 +279,16 @@ const char* get_sched_policy_profile_name(SchedPolicy policy) { * sched profile array for: * sched profile array for: * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7) * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7), * SP_FOREGROUND_WINDOW(8) * index is policy + 1 * index is policy + 1 * this need keep in sync with SchedPolicy enum * this need keep in sync with SchedPolicy enum */ */ static constexpr const char* kSchedProfiles[SP_CNT + 1] = { static constexpr const char* kSchedProfiles[SP_CNT + 1] = { "SCHED_SP_DEFAULT", "SCHED_SP_BACKGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_DEFAULT", "SCHED_SP_BACKGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_SYSTEM", "SCHED_SP_FOREGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_SYSTEM", "SCHED_SP_FOREGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_TOP_APP", "SCHED_SP_RT_APP", "SCHED_SP_DEFAULT"}; "SCHED_SP_TOP_APP", "SCHED_SP_RT_APP", "SCHED_SP_DEFAULT", "SCHED_SP_FOREGROUND_WINDOW"}; if (policy < SP_DEFAULT || policy >= SP_CNT) { if (policy < SP_DEFAULT || policy >= SP_CNT) { return nullptr; return nullptr; } } Loading rootdir/init.rc +14 −0 Original line number Original line Diff line number Diff line Loading @@ -145,6 +145,7 @@ on init # cpuctl hierarchy for devices using utilclamp # cpuctl hierarchy for devices using utilclamp mkdir /dev/cpuctl/foreground mkdir /dev/cpuctl/foreground mkdir /dev/cpuctl/foreground_window mkdir /dev/cpuctl/background mkdir /dev/cpuctl/background mkdir /dev/cpuctl/top-app mkdir /dev/cpuctl/top-app mkdir /dev/cpuctl/rt mkdir /dev/cpuctl/rt Loading @@ -153,6 +154,7 @@ on init mkdir /dev/cpuctl/dex2oat mkdir /dev/cpuctl/dex2oat chown system system /dev/cpuctl chown system system /dev/cpuctl chown system system /dev/cpuctl/foreground chown system system /dev/cpuctl/foreground chown system system /dev/cpuctl/foreground_window chown system system /dev/cpuctl/background chown system system /dev/cpuctl/background chown system system /dev/cpuctl/top-app chown system system /dev/cpuctl/top-app chown system system /dev/cpuctl/rt chown system system /dev/cpuctl/rt Loading @@ -161,6 +163,7 @@ on init chown system system /dev/cpuctl/dex2oat chown system system /dev/cpuctl/dex2oat chown system system /dev/cpuctl/tasks chown system system /dev/cpuctl/tasks chown system system /dev/cpuctl/foreground/tasks chown system system /dev/cpuctl/foreground/tasks chown system system /dev/cpuctl/foreground_window/tasks chown system system /dev/cpuctl/background/tasks chown system system /dev/cpuctl/background/tasks chown system system /dev/cpuctl/top-app/tasks chown system system /dev/cpuctl/top-app/tasks chown system system /dev/cpuctl/rt/tasks chown system system /dev/cpuctl/rt/tasks Loading @@ -169,6 +172,7 @@ on init chown system system /dev/cpuctl/dex2oat/tasks chown system system /dev/cpuctl/dex2oat/tasks chown system system /dev/cpuctl/cgroup.procs chown system system /dev/cpuctl/cgroup.procs chown system system /dev/cpuctl/foreground/cgroup.procs chown system system /dev/cpuctl/foreground/cgroup.procs chown system system /dev/cpuctl/foreground_window/cgroup.procs chown system system /dev/cpuctl/background/cgroup.procs chown system system /dev/cpuctl/background/cgroup.procs chown system system /dev/cpuctl/top-app/cgroup.procs chown system system /dev/cpuctl/top-app/cgroup.procs chown system system /dev/cpuctl/rt/cgroup.procs chown system system /dev/cpuctl/rt/cgroup.procs Loading @@ -177,6 +181,7 @@ on init chown system system /dev/cpuctl/dex2oat/cgroup.procs chown system system /dev/cpuctl/dex2oat/cgroup.procs chmod 0664 /dev/cpuctl/tasks chmod 0664 /dev/cpuctl/tasks chmod 0664 /dev/cpuctl/foreground/tasks chmod 0664 /dev/cpuctl/foreground/tasks chmod 0664 /dev/cpuctl/foreground_window/tasks chmod 0664 /dev/cpuctl/background/tasks chmod 0664 /dev/cpuctl/background/tasks chmod 0664 /dev/cpuctl/top-app/tasks chmod 0664 /dev/cpuctl/top-app/tasks chmod 0664 /dev/cpuctl/rt/tasks chmod 0664 /dev/cpuctl/rt/tasks Loading @@ -185,6 +190,7 @@ on init chmod 0664 /dev/cpuctl/dex2oat/tasks chmod 0664 /dev/cpuctl/dex2oat/tasks chmod 0664 /dev/cpuctl/cgroup.procs chmod 0664 /dev/cpuctl/cgroup.procs chmod 0664 /dev/cpuctl/foreground/cgroup.procs chmod 0664 /dev/cpuctl/foreground/cgroup.procs chmod 0664 /dev/cpuctl/foreground_window/cgroup.procs chmod 0664 /dev/cpuctl/background/cgroup.procs chmod 0664 /dev/cpuctl/background/cgroup.procs chmod 0664 /dev/cpuctl/top-app/cgroup.procs chmod 0664 /dev/cpuctl/top-app/cgroup.procs chmod 0664 /dev/cpuctl/rt/cgroup.procs chmod 0664 /dev/cpuctl/rt/cgroup.procs Loading Loading @@ -354,6 +360,9 @@ on init mkdir /dev/cpuset/foreground mkdir /dev/cpuset/foreground copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus copy /dev/cpuset/mems /dev/cpuset/foreground/mems copy /dev/cpuset/mems /dev/cpuset/foreground/mems mkdir /dev/cpuset/foreground_window copy /dev/cpuset/cpus /dev/cpuset/foreground_window/cpus copy /dev/cpuset/mems /dev/cpuset/foreground_window/mems mkdir /dev/cpuset/background mkdir /dev/cpuset/background copy /dev/cpuset/cpus /dev/cpuset/background/cpus copy /dev/cpuset/cpus /dev/cpuset/background/cpus copy /dev/cpuset/mems /dev/cpuset/background/mems copy /dev/cpuset/mems /dev/cpuset/background/mems Loading Loading @@ -382,6 +391,7 @@ on init # change permissions for all cpusets we'll touch at runtime # change permissions for all cpusets we'll touch at runtime chown system system /dev/cpuset chown system system /dev/cpuset chown system system /dev/cpuset/foreground chown system system /dev/cpuset/foreground chown system system /dev/cpuset/foreground_window chown system system /dev/cpuset/background chown system system /dev/cpuset/background chown system system /dev/cpuset/system-background chown system system /dev/cpuset/system-background chown system system /dev/cpuset/top-app chown system system /dev/cpuset/top-app Loading @@ -389,6 +399,7 @@ on init chown system system /dev/cpuset/camera-daemon chown system system /dev/cpuset/camera-daemon chown system system /dev/cpuset/tasks chown system system /dev/cpuset/tasks chown system system /dev/cpuset/foreground/tasks chown system system /dev/cpuset/foreground/tasks chown system system /dev/cpuset/foreground_window/tasks chown system system /dev/cpuset/background/tasks chown system system /dev/cpuset/background/tasks chown system system /dev/cpuset/system-background/tasks chown system system /dev/cpuset/system-background/tasks chown system system /dev/cpuset/top-app/tasks chown system system /dev/cpuset/top-app/tasks Loading @@ -396,6 +407,7 @@ on init chown system system /dev/cpuset/camera-daemon/tasks chown system system /dev/cpuset/camera-daemon/tasks chown system system /dev/cpuset/cgroup.procs chown system system /dev/cpuset/cgroup.procs chown system system /dev/cpuset/foreground/cgroup.procs chown system system /dev/cpuset/foreground/cgroup.procs chown system system /dev/cpuset/foreground_window/cgroup.procs chown system system /dev/cpuset/background/cgroup.procs chown system system /dev/cpuset/background/cgroup.procs chown system system /dev/cpuset/system-background/cgroup.procs chown system system /dev/cpuset/system-background/cgroup.procs chown system system /dev/cpuset/top-app/cgroup.procs chown system system /dev/cpuset/top-app/cgroup.procs Loading @@ -406,6 +418,7 @@ on init chmod 0775 /dev/cpuset/system-background chmod 0775 /dev/cpuset/system-background chmod 0664 /dev/cpuset/foreground/tasks chmod 0664 /dev/cpuset/foreground/tasks chmod 0664 /dev/cpuset/foreground_window/tasks chmod 0664 /dev/cpuset/background/tasks chmod 0664 /dev/cpuset/background/tasks chmod 0664 /dev/cpuset/system-background/tasks chmod 0664 /dev/cpuset/system-background/tasks chmod 0664 /dev/cpuset/top-app/tasks chmod 0664 /dev/cpuset/top-app/tasks Loading @@ -413,6 +426,7 @@ on init chmod 0664 /dev/cpuset/tasks chmod 0664 /dev/cpuset/tasks chmod 0664 /dev/cpuset/camera-daemon/tasks chmod 0664 /dev/cpuset/camera-daemon/tasks chmod 0664 /dev/cpuset/foreground/cgroup.procs chmod 0664 /dev/cpuset/foreground/cgroup.procs chmod 0664 /dev/cpuset/foreground_window/cgroup.procs chmod 0664 /dev/cpuset/background/cgroup.procs chmod 0664 /dev/cpuset/background/cgroup.procs chmod 0664 /dev/cpuset/system-background/cgroup.procs chmod 0664 /dev/cpuset/system-background/cgroup.procs chmod 0664 /dev/cpuset/top-app/cgroup.procs chmod 0664 /dev/cpuset/top-app/cgroup.procs Loading Loading
libprocessgroup/include/processgroup/sched_policy.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ typedef enum { SP_TOP_APP = 5, SP_TOP_APP = 5, SP_RT_APP = 6, SP_RT_APP = 6, SP_RESTRICTED = 7, SP_RESTRICTED = 7, SP_FOREGROUND_WINDOW = 8, SP_CNT, SP_CNT, SP_MAX = SP_CNT - 1, SP_MAX = SP_CNT - 1, SP_SYSTEM_DEFAULT = SP_FOREGROUND, SP_SYSTEM_DEFAULT = SP_FOREGROUND, Loading
libprocessgroup/profiles/task_profiles.json +39 −0 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,11 @@ "Controller": "cpuset", "Controller": "cpuset", "File": "foreground/cpus" "File": "foreground/cpus" }, }, { "Name": "HighCapacityWICPUs", "Controller": "cpuset", "File": "foreground_window/cpus" }, { { "Name": "MaxCapacityCPUs", "Name": "MaxCapacityCPUs", "Controller": "cpuset", "Controller": "cpuset", Loading Loading @@ -158,6 +163,19 @@ } } ] ] }, }, { "Name": "HighPerformanceWI", "Actions": [ { "Name": "JoinCgroup", "Params": { "Controller": "cpu", "Path": "foreground_window" } } ] }, { { "Name": "MaxPerformance", "Name": "MaxPerformance", "Actions": [ "Actions": [ Loading Loading @@ -381,6 +399,19 @@ } } ] ] }, }, { "Name": "ProcessCapacityHighWI", "Actions": [ { "Name": "JoinCgroup", "Params": { "Controller": "cpuset", "Path": "foreground_window" } } ] }, { { "Name": "ProcessCapacityMax", "Name": "ProcessCapacityMax", "Actions": [ "Actions": [ Loading Loading @@ -638,6 +669,10 @@ "Name": "SCHED_SP_FOREGROUND", "Name": "SCHED_SP_FOREGROUND", "Profiles": [ "HighPerformance", "HighIoPriority", "TimerSlackNormal" ] "Profiles": [ "HighPerformance", "HighIoPriority", "TimerSlackNormal" ] }, }, { "Name": "SCHED_SP_FOREGROUND_WINDOW", "Profiles": [ "HighPerformanceWI", "HighIoPriority", "TimerSlackNormal" ] }, { { "Name": "SCHED_SP_TOP_APP", "Name": "SCHED_SP_TOP_APP", "Profiles": [ "MaxPerformance", "MaxIoPriority", "TimerSlackNormal" ] "Profiles": [ "MaxPerformance", "MaxIoPriority", "TimerSlackNormal" ] Loading Loading @@ -666,6 +701,10 @@ "Name": "CPUSET_SP_FOREGROUND", "Name": "CPUSET_SP_FOREGROUND", "Profiles": [ "HighPerformance", "ProcessCapacityHigh", "HighIoPriority", "TimerSlackNormal" ] "Profiles": [ "HighPerformance", "ProcessCapacityHigh", "HighIoPriority", "TimerSlackNormal" ] }, }, { "Name": "CPUSET_SP_FOREGROUND_WINDOW", "Profiles": [ "HighPerformanceWI", "ProcessCapacityHighWI", "HighIoPriority", "TimerSlackNormal" ] }, { { "Name": "CPUSET_SP_TOP_APP", "Name": "CPUSET_SP_TOP_APP", "Profiles": [ "MaxPerformance", "ProcessCapacityMax", "MaxIoPriority", "TimerSlackNormal" ] "Profiles": [ "MaxPerformance", "ProcessCapacityMax", "MaxIoPriority", "TimerSlackNormal" ] Loading
libprocessgroup/sched_policy.cpp +22 −9 Original line number Original line Diff line number Diff line Loading @@ -58,6 +58,8 @@ int set_cpuset_policy(pid_t tid, SchedPolicy policy) { return SetTaskProfiles(tid, {"CPUSET_SP_SYSTEM"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"CPUSET_SP_SYSTEM"}, true) ? 0 : -1; case SP_RESTRICTED: case SP_RESTRICTED: return SetTaskProfiles(tid, {"CPUSET_SP_RESTRICTED"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"CPUSET_SP_RESTRICTED"}, true) ? 0 : -1; case SP_FOREGROUND_WINDOW: return SetTaskProfiles(tid, {"CPUSET_SP_FOREGROUND_WINDOW"}, true) ? 0 : -1; default: default: break; break; } } Loading Loading @@ -110,6 +112,9 @@ int set_sched_policy(pid_t tid, SchedPolicy policy) { case SP_RT_APP: case SP_RT_APP: SLOGD("RT tid %d (%s)", tid, thread_name); SLOGD("RT tid %d (%s)", tid, thread_name); break; break; case SP_FOREGROUND_WINDOW: SLOGD("WI tid %d (%s)", tid, thread_name); break; default: default: SLOGD("??? tid %d (%s)", tid, thread_name); SLOGD("??? tid %d (%s)", tid, thread_name); break; break; Loading @@ -129,6 +134,8 @@ int set_sched_policy(pid_t tid, SchedPolicy policy) { return SetTaskProfiles(tid, {"SCHED_SP_SYSTEM"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"SCHED_SP_SYSTEM"}, true) ? 0 : -1; case SP_RT_APP: case SP_RT_APP: return SetTaskProfiles(tid, {"SCHED_SP_RT_APP"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"SCHED_SP_RT_APP"}, true) ? 0 : -1; case SP_FOREGROUND_WINDOW: return SetTaskProfiles(tid, {"SCHED_SP_FOREGROUND_WINDOW"}, true) ? 0 : -1; default: default: return SetTaskProfiles(tid, {"SCHED_SP_DEFAULT"}, true) ? 0 : -1; return SetTaskProfiles(tid, {"SCHED_SP_DEFAULT"}, true) ? 0 : -1; } } Loading Loading @@ -179,6 +186,8 @@ static int get_sched_policy_from_group(const std::string& group, SchedPolicy* po *policy = SP_TOP_APP; *policy = SP_TOP_APP; } else if (group == "restricted") { } else if (group == "restricted") { *policy = SP_RESTRICTED; *policy = SP_RESTRICTED; } else if (group == "foreground_window") { *policy = SP_FOREGROUND_WINDOW; } else { } else { errno = ERANGE; errno = ERANGE; return -1; return -1; Loading Loading @@ -235,7 +244,7 @@ const char* get_sched_policy_name(SchedPolicy policy) { static const char* const kSchedPolicyNames[] = { static const char* const kSchedPolicyNames[] = { [SP_BACKGROUND] = "bg", [SP_FOREGROUND] = "fg", [SP_SYSTEM] = " ", [SP_BACKGROUND] = "bg", [SP_FOREGROUND] = "fg", [SP_SYSTEM] = " ", [SP_AUDIO_APP] = "aa", [SP_AUDIO_SYS] = "as", [SP_TOP_APP] = "ta", [SP_AUDIO_APP] = "aa", [SP_AUDIO_SYS] = "as", [SP_TOP_APP] = "ta", [SP_RT_APP] = "rt", [SP_RESTRICTED] = "rs", [SP_RT_APP] = "rt", [SP_RESTRICTED] = "rs", [SP_FOREGROUND_WINDOW] = "wi", }; }; static_assert(arraysize(kSchedPolicyNames) == SP_CNT, "missing name"); static_assert(arraysize(kSchedPolicyNames) == SP_CNT, "missing name"); if (policy < SP_BACKGROUND || policy >= SP_CNT) { if (policy < SP_BACKGROUND || policy >= SP_CNT) { Loading @@ -249,14 +258,16 @@ const char* get_cpuset_policy_profile_name(SchedPolicy policy) { * cpuset profile array for: * cpuset profile array for: * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7) * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7), * SP_FOREGROUND_WINDOW(8) * index is policy + 1 * index is policy + 1 * this need keep in sync with SchedPolicy enum * this need keep in sync with SchedPolicy enum */ */ static constexpr const char* kCpusetProfiles[SP_CNT + 1] = { static constexpr const char* kCpusetProfiles[SP_CNT + 1] = { "CPUSET_SP_DEFAULT", "CPUSET_SP_BACKGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_DEFAULT", "CPUSET_SP_BACKGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_SYSTEM", "CPUSET_SP_FOREGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_SYSTEM", "CPUSET_SP_FOREGROUND", "CPUSET_SP_FOREGROUND", "CPUSET_SP_TOP_APP", "CPUSET_SP_DEFAULT", "CPUSET_SP_RESTRICTED"}; "CPUSET_SP_TOP_APP", "CPUSET_SP_DEFAULT", "CPUSET_SP_RESTRICTED", "CPUSET_SP_FOREGROUND_WINDOW"}; if (policy < SP_DEFAULT || policy >= SP_CNT) { if (policy < SP_DEFAULT || policy >= SP_CNT) { return nullptr; return nullptr; } } Loading @@ -268,14 +279,16 @@ const char* get_sched_policy_profile_name(SchedPolicy policy) { * sched profile array for: * sched profile array for: * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7) * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7), * SP_FOREGROUND_WINDOW(8) * index is policy + 1 * index is policy + 1 * this need keep in sync with SchedPolicy enum * this need keep in sync with SchedPolicy enum */ */ static constexpr const char* kSchedProfiles[SP_CNT + 1] = { static constexpr const char* kSchedProfiles[SP_CNT + 1] = { "SCHED_SP_DEFAULT", "SCHED_SP_BACKGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_DEFAULT", "SCHED_SP_BACKGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_SYSTEM", "SCHED_SP_FOREGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_SYSTEM", "SCHED_SP_FOREGROUND", "SCHED_SP_FOREGROUND", "SCHED_SP_TOP_APP", "SCHED_SP_RT_APP", "SCHED_SP_DEFAULT"}; "SCHED_SP_TOP_APP", "SCHED_SP_RT_APP", "SCHED_SP_DEFAULT", "SCHED_SP_FOREGROUND_WINDOW"}; if (policy < SP_DEFAULT || policy >= SP_CNT) { if (policy < SP_DEFAULT || policy >= SP_CNT) { return nullptr; return nullptr; } } Loading
rootdir/init.rc +14 −0 Original line number Original line Diff line number Diff line Loading @@ -145,6 +145,7 @@ on init # cpuctl hierarchy for devices using utilclamp # cpuctl hierarchy for devices using utilclamp mkdir /dev/cpuctl/foreground mkdir /dev/cpuctl/foreground mkdir /dev/cpuctl/foreground_window mkdir /dev/cpuctl/background mkdir /dev/cpuctl/background mkdir /dev/cpuctl/top-app mkdir /dev/cpuctl/top-app mkdir /dev/cpuctl/rt mkdir /dev/cpuctl/rt Loading @@ -153,6 +154,7 @@ on init mkdir /dev/cpuctl/dex2oat mkdir /dev/cpuctl/dex2oat chown system system /dev/cpuctl chown system system /dev/cpuctl chown system system /dev/cpuctl/foreground chown system system /dev/cpuctl/foreground chown system system /dev/cpuctl/foreground_window chown system system /dev/cpuctl/background chown system system /dev/cpuctl/background chown system system /dev/cpuctl/top-app chown system system /dev/cpuctl/top-app chown system system /dev/cpuctl/rt chown system system /dev/cpuctl/rt Loading @@ -161,6 +163,7 @@ on init chown system system /dev/cpuctl/dex2oat chown system system /dev/cpuctl/dex2oat chown system system /dev/cpuctl/tasks chown system system /dev/cpuctl/tasks chown system system /dev/cpuctl/foreground/tasks chown system system /dev/cpuctl/foreground/tasks chown system system /dev/cpuctl/foreground_window/tasks chown system system /dev/cpuctl/background/tasks chown system system /dev/cpuctl/background/tasks chown system system /dev/cpuctl/top-app/tasks chown system system /dev/cpuctl/top-app/tasks chown system system /dev/cpuctl/rt/tasks chown system system /dev/cpuctl/rt/tasks Loading @@ -169,6 +172,7 @@ on init chown system system /dev/cpuctl/dex2oat/tasks chown system system /dev/cpuctl/dex2oat/tasks chown system system /dev/cpuctl/cgroup.procs chown system system /dev/cpuctl/cgroup.procs chown system system /dev/cpuctl/foreground/cgroup.procs chown system system /dev/cpuctl/foreground/cgroup.procs chown system system /dev/cpuctl/foreground_window/cgroup.procs chown system system /dev/cpuctl/background/cgroup.procs chown system system /dev/cpuctl/background/cgroup.procs chown system system /dev/cpuctl/top-app/cgroup.procs chown system system /dev/cpuctl/top-app/cgroup.procs chown system system /dev/cpuctl/rt/cgroup.procs chown system system /dev/cpuctl/rt/cgroup.procs Loading @@ -177,6 +181,7 @@ on init chown system system /dev/cpuctl/dex2oat/cgroup.procs chown system system /dev/cpuctl/dex2oat/cgroup.procs chmod 0664 /dev/cpuctl/tasks chmod 0664 /dev/cpuctl/tasks chmod 0664 /dev/cpuctl/foreground/tasks chmod 0664 /dev/cpuctl/foreground/tasks chmod 0664 /dev/cpuctl/foreground_window/tasks chmod 0664 /dev/cpuctl/background/tasks chmod 0664 /dev/cpuctl/background/tasks chmod 0664 /dev/cpuctl/top-app/tasks chmod 0664 /dev/cpuctl/top-app/tasks chmod 0664 /dev/cpuctl/rt/tasks chmod 0664 /dev/cpuctl/rt/tasks Loading @@ -185,6 +190,7 @@ on init chmod 0664 /dev/cpuctl/dex2oat/tasks chmod 0664 /dev/cpuctl/dex2oat/tasks chmod 0664 /dev/cpuctl/cgroup.procs chmod 0664 /dev/cpuctl/cgroup.procs chmod 0664 /dev/cpuctl/foreground/cgroup.procs chmod 0664 /dev/cpuctl/foreground/cgroup.procs chmod 0664 /dev/cpuctl/foreground_window/cgroup.procs chmod 0664 /dev/cpuctl/background/cgroup.procs chmod 0664 /dev/cpuctl/background/cgroup.procs chmod 0664 /dev/cpuctl/top-app/cgroup.procs chmod 0664 /dev/cpuctl/top-app/cgroup.procs chmod 0664 /dev/cpuctl/rt/cgroup.procs chmod 0664 /dev/cpuctl/rt/cgroup.procs Loading Loading @@ -354,6 +360,9 @@ on init mkdir /dev/cpuset/foreground mkdir /dev/cpuset/foreground copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus copy /dev/cpuset/mems /dev/cpuset/foreground/mems copy /dev/cpuset/mems /dev/cpuset/foreground/mems mkdir /dev/cpuset/foreground_window copy /dev/cpuset/cpus /dev/cpuset/foreground_window/cpus copy /dev/cpuset/mems /dev/cpuset/foreground_window/mems mkdir /dev/cpuset/background mkdir /dev/cpuset/background copy /dev/cpuset/cpus /dev/cpuset/background/cpus copy /dev/cpuset/cpus /dev/cpuset/background/cpus copy /dev/cpuset/mems /dev/cpuset/background/mems copy /dev/cpuset/mems /dev/cpuset/background/mems Loading Loading @@ -382,6 +391,7 @@ on init # change permissions for all cpusets we'll touch at runtime # change permissions for all cpusets we'll touch at runtime chown system system /dev/cpuset chown system system /dev/cpuset chown system system /dev/cpuset/foreground chown system system /dev/cpuset/foreground chown system system /dev/cpuset/foreground_window chown system system /dev/cpuset/background chown system system /dev/cpuset/background chown system system /dev/cpuset/system-background chown system system /dev/cpuset/system-background chown system system /dev/cpuset/top-app chown system system /dev/cpuset/top-app Loading @@ -389,6 +399,7 @@ on init chown system system /dev/cpuset/camera-daemon chown system system /dev/cpuset/camera-daemon chown system system /dev/cpuset/tasks chown system system /dev/cpuset/tasks chown system system /dev/cpuset/foreground/tasks chown system system /dev/cpuset/foreground/tasks chown system system /dev/cpuset/foreground_window/tasks chown system system /dev/cpuset/background/tasks chown system system /dev/cpuset/background/tasks chown system system /dev/cpuset/system-background/tasks chown system system /dev/cpuset/system-background/tasks chown system system /dev/cpuset/top-app/tasks chown system system /dev/cpuset/top-app/tasks Loading @@ -396,6 +407,7 @@ on init chown system system /dev/cpuset/camera-daemon/tasks chown system system /dev/cpuset/camera-daemon/tasks chown system system /dev/cpuset/cgroup.procs chown system system /dev/cpuset/cgroup.procs chown system system /dev/cpuset/foreground/cgroup.procs chown system system /dev/cpuset/foreground/cgroup.procs chown system system /dev/cpuset/foreground_window/cgroup.procs chown system system /dev/cpuset/background/cgroup.procs chown system system /dev/cpuset/background/cgroup.procs chown system system /dev/cpuset/system-background/cgroup.procs chown system system /dev/cpuset/system-background/cgroup.procs chown system system /dev/cpuset/top-app/cgroup.procs chown system system /dev/cpuset/top-app/cgroup.procs Loading @@ -406,6 +418,7 @@ on init chmod 0775 /dev/cpuset/system-background chmod 0775 /dev/cpuset/system-background chmod 0664 /dev/cpuset/foreground/tasks chmod 0664 /dev/cpuset/foreground/tasks chmod 0664 /dev/cpuset/foreground_window/tasks chmod 0664 /dev/cpuset/background/tasks chmod 0664 /dev/cpuset/background/tasks chmod 0664 /dev/cpuset/system-background/tasks chmod 0664 /dev/cpuset/system-background/tasks chmod 0664 /dev/cpuset/top-app/tasks chmod 0664 /dev/cpuset/top-app/tasks Loading @@ -413,6 +426,7 @@ on init chmod 0664 /dev/cpuset/tasks chmod 0664 /dev/cpuset/tasks chmod 0664 /dev/cpuset/camera-daemon/tasks chmod 0664 /dev/cpuset/camera-daemon/tasks chmod 0664 /dev/cpuset/foreground/cgroup.procs chmod 0664 /dev/cpuset/foreground/cgroup.procs chmod 0664 /dev/cpuset/foreground_window/cgroup.procs chmod 0664 /dev/cpuset/background/cgroup.procs chmod 0664 /dev/cpuset/background/cgroup.procs chmod 0664 /dev/cpuset/system-background/cgroup.procs chmod 0664 /dev/cpuset/system-background/cgroup.procs chmod 0664 /dev/cpuset/top-app/cgroup.procs chmod 0664 /dev/cpuset/top-app/cgroup.procs Loading