From 90f3c9e5c6bc27aed0e0451b3790e90d9ca1e2f4 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 (cherry picked from commit 0195bcdba7100c449ed56688121b06c6d699b4d4) --- lmkd.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lmkd.cpp b/lmkd.cpp index 68f9729..1caaf67 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 @@ -1987,7 +1987,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; @@ -2014,8 +2015,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; } } @@ -2190,7 +2191,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;