libprocessgroup: Remove schedtune support

Schedtune was an out of tree cgroup controller present in Android
kernels up to 4.19. It was replaced with uclamp and the cpu controller.
Now that 4.19 is EOL and unsupported, and schedtune is not present in
any supported Android kernels, remove the userspace support for
schedtune.

Bug: 362504801
Change-Id: If8baaf1a616984c5dbaac1bbd03e23ad001bc29c
This commit is contained in:
T.J. Mercier 2024-08-27 16:50:10 +00:00
parent aa56f29ff9
commit 981664df08
10 changed files with 2 additions and 588 deletions

View file

@ -67,13 +67,6 @@ static void AssertPolicy(SchedPolicy expected_policy) {
}
TEST(SchedPolicy, set_sched_policy) {
if (!schedboost_enabled()) {
// schedboost_enabled() (i.e. CONFIG_CGROUP_SCHEDTUNE) is optional;
// it's only needed on devices using energy-aware scheduler.
GTEST_LOG_(INFO) << "skipping test that requires CONFIG_CGROUP_SCHEDTUNE";
return;
}
ASSERT_EQ(0, set_sched_policy(0, SP_BACKGROUND));
ASSERT_EQ(0, set_cpuset_policy(0, SP_BACKGROUND));
AssertPolicy(SP_BACKGROUND);

View file

@ -29,14 +29,6 @@ extern "C" {
*/
extern bool cpusets_enabled();
/*
* Check if Linux kernel enables SCHEDTUNE feature (only available in Android
* common kernel or Linaro LSK, not in mainline Linux as of v4.9)
*
* Return value: 1 if Linux kernel CONFIG_CGROUP_SCHEDTUNE=y; 0 otherwise.
*/
extern bool schedboost_enabled();
/* Keep in sync with THREAD_GROUP_* in frameworks/base/core/java/android/os/Process.java */
typedef enum {
SP_DEFAULT = -1,

View file

@ -19,11 +19,6 @@ package {
prebuilt_etc {
name: "cgroups.json",
src: "cgroups.json",
required: [
"cgroups_28.json",
"cgroups_29.json",
"cgroups_30.json",
],
}
prebuilt_etc {
@ -33,50 +28,9 @@ prebuilt_etc {
src: "cgroups.recovery.json",
}
prebuilt_etc {
name: "cgroups_28.json",
src: "cgroups_28.json",
sub_dir: "task_profiles",
}
prebuilt_etc {
name: "cgroups_29.json",
src: "cgroups_29.json",
sub_dir: "task_profiles",
}
prebuilt_etc {
name: "cgroups_30.json",
src: "cgroups_30.json",
sub_dir: "task_profiles",
}
prebuilt_etc {
name: "task_profiles.json",
src: "task_profiles.json",
required: [
"task_profiles_28.json",
"task_profiles_29.json",
"task_profiles_30.json",
],
}
prebuilt_etc {
name: "task_profiles_28.json",
src: "task_profiles_28.json",
sub_dir: "task_profiles",
}
prebuilt_etc {
name: "task_profiles_29.json",
src: "task_profiles_29.json",
sub_dir: "task_profiles",
}
prebuilt_etc {
name: "task_profiles_30.json",
src: "task_profiles_30.json",
sub_dir: "task_profiles",
}
cc_defaults {

View file

@ -1,11 +0,0 @@
{
"Cgroups": [
{
"Controller": "schedtune",
"Path": "/dev/stune",
"Mode": "0755",
"UID": "system",
"GID": "system"
}
]
}

View file

@ -1,11 +0,0 @@
{
"Cgroups": [
{
"Controller": "schedtune",
"Path": "/dev/stune",
"Mode": "0755",
"UID": "system",
"GID": "system"
}
]
}

View file

@ -1,12 +0,0 @@
{
"Cgroups": [
{
"Controller": "schedtune",
"Path": "/dev/stune",
"Mode": "0755",
"UID": "system",
"GID": "system",
"Optional": true
}
]
}

View file

@ -1,160 +0,0 @@
{
"Attributes": [
{
"Name": "STuneBoost",
"Controller": "schedtune",
"File": "schedtune.boost"
},
{
"Name": "STunePreferIdle",
"Controller": "schedtune",
"File": "schedtune.prefer_idle"
}
],
"Profiles": [
{
"Name": "HighEnergySaving",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "NormalPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": ""
}
}
]
},
{
"Name": "ServicePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "HighPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "foreground"
}
}
]
},
{
"Name": "MaxPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "top-app"
}
}
]
},
{
"Name": "RealtimePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "rt"
}
}
]
},
{
"Name": "CameraServicePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "camera-daemon"
}
}
]
},
{
"Name": "NNApiHALPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "nnapi-hal"
}
}
]
},
{
"Name": "Dex2oatPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "CpuPolicySpread",
"Actions": [
{
"Name": "SetAttribute",
"Params":
{
"Name": "STunePreferIdle",
"Value": "1"
}
}
]
},
{
"Name": "CpuPolicyPack",
"Actions": [
{
"Name": "SetAttribute",
"Params":
{
"Name": "STunePreferIdle",
"Value": "0"
}
}
]
}
]
}

View file

@ -1,160 +0,0 @@
{
"Attributes": [
{
"Name": "STuneBoost",
"Controller": "schedtune",
"File": "schedtune.boost"
},
{
"Name": "STunePreferIdle",
"Controller": "schedtune",
"File": "schedtune.prefer_idle"
}
],
"Profiles": [
{
"Name": "HighEnergySaving",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "NormalPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": ""
}
}
]
},
{
"Name": "HighPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "foreground"
}
}
]
},
{
"Name": "ServicePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "MaxPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "top-app"
}
}
]
},
{
"Name": "RealtimePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "rt"
}
}
]
},
{
"Name": "CameraServicePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "camera-daemon"
}
}
]
},
{
"Name": "NNApiHALPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "nnapi-hal"
}
}
]
},
{
"Name": "Dex2oatPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "CpuPolicySpread",
"Actions": [
{
"Name": "SetAttribute",
"Params":
{
"Name": "STunePreferIdle",
"Value": "1"
}
}
]
},
{
"Name": "CpuPolicyPack",
"Actions": [
{
"Name": "SetAttribute",
"Params":
{
"Name": "STunePreferIdle",
"Value": "0"
}
}
]
}
]
}

View file

@ -1,160 +0,0 @@
{
"Attributes": [
{
"Name": "STuneBoost",
"Controller": "schedtune",
"File": "schedtune.boost"
},
{
"Name": "STunePreferIdle",
"Controller": "schedtune",
"File": "schedtune.prefer_idle"
}
],
"Profiles": [
{
"Name": "HighEnergySaving",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "NormalPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": ""
}
}
]
},
{
"Name": "ServicePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "HighPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "foreground"
}
}
]
},
{
"Name": "MaxPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "top-app"
}
}
]
},
{
"Name": "RealtimePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "rt"
}
}
]
},
{
"Name": "CameraServicePerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "camera-daemon"
}
}
]
},
{
"Name": "NNApiHALPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "nnapi-hal"
}
}
]
},
{
"Name": "Dex2oatPerformance",
"Actions": [
{
"Name": "JoinCgroup",
"Params":
{
"Controller": "schedtune",
"Path": "background"
}
}
]
},
{
"Name": "CpuPolicySpread",
"Actions": [
{
"Name": "SetAttribute",
"Params":
{
"Name": "STunePreferIdle",
"Value": "1"
}
}
]
},
{
"Name": "CpuPolicyPack",
"Actions": [
{
"Name": "SetAttribute",
"Params":
{
"Name": "STunePreferIdle",
"Value": "0"
}
}
]
}
]
}

View file

@ -148,20 +148,10 @@ bool cpusets_enabled() {
return enabled;
}
static bool schedtune_enabled() {
return (CgroupMap::GetInstance().FindController("schedtune").IsUsable());
}
static bool cpuctl_enabled() {
return (CgroupMap::GetInstance().FindController("cpu").IsUsable());
}
bool schedboost_enabled() {
static bool enabled = schedtune_enabled() || cpuctl_enabled();
return enabled;
}
static int getCGroupSubsys(pid_t tid, const char* subsys, std::string& subgroup) {
auto controller = CgroupMap::GetInstance().FindController(subsys);
@ -201,9 +191,8 @@ int get_sched_policy(pid_t tid, SchedPolicy* policy) {
}
std::string group;
if (schedboost_enabled()) {
if ((getCGroupSubsys(tid, "schedtune", group) < 0) &&
(getCGroupSubsys(tid, "cpu", group) < 0)) {
if (cpuctl_enabled()) {
if (getCGroupSubsys(tid, "cpu", group) < 0) {
LOG(ERROR) << "Failed to find cpu cgroup for tid " << tid;
return -1;
}