From 0195bcdba7100c449ed56688121b06c6d699b4d4 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Mon, 13 Sep 2021 17:59:05 -0700 Subject: [PATCH] lmkd: migrate process to FOREGROUND sched group before kill BG group may have settings such as cpu.shares impacting reclaim performance. Let us migrate task to foreground sched group similarly to cpuset group. Test: Build Bug: 199797672 Signed-off-by: Wei Wang Change-Id: I75ee9f3486a2c76e65267a98e39edff96a5e1673 --- lmkd.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lmkd.cpp b/lmkd.cpp index 4e4490f..eb3f25a 100644 --- a/lmkd.cpp +++ b/lmkd.cpp @@ -40,7 +40,6 @@ #include #include -#include #include #include #include @@ -48,6 +47,7 @@ #include #include #include +#include #include #include @@ -2008,7 +2008,8 @@ static struct proc *proc_get_heaviest(int oomadj) { return maxprocp; } -static void set_process_group_and_prio(int pid, SchedPolicy sp, int prio) { +static void set_process_group_and_prio(int pid, const std::vector& profiles, + int prio) { DIR* d; char proc_path[PATH_MAX]; struct dirent* de; @@ -2035,8 +2036,8 @@ static void set_process_group_and_prio(int pid, SchedPolicy sp, int prio) { ALOGW("Unable to raise priority of killing t_pid (%d): errno=%d", t_pid, errno); } - if (set_cpuset_policy(t_pid, sp)) { - ALOGW("Failed to set_cpuset_policy on pid(%d) t_pid(%d) to %d", pid, t_pid, (int)sp); + if (!SetTaskProfiles(t_pid, profiles)) { + ALOGW("Failed to set task_profiles on pid(%d) t_pid(%d)", pid, t_pid); continue; } } @@ -2207,7 +2208,8 @@ static int kill_one_process(struct proc* procp, int min_oom_score, struct kill_i goto out; } - set_process_group_and_prio(pid, SP_FOREGROUND, ANDROID_PRIORITY_HIGHEST); + set_process_group_and_prio(pid, {"CPUSET_SP_BACKGROUND", "SCHED_SP_FOREGROUND"}, + ANDROID_PRIORITY_HIGHEST); last_kill_tm = *tm;