From b248697c0ed20aef133b676f1c9dc342a10f12c1 Mon Sep 17 00:00:00 2001 From: Unsung Lee Date: Fri, 21 Jul 2023 17:01:52 +0900 Subject: [PATCH] memory-cgroup: Add a new oom_level called OOM_LEVEL_FOREGROUND Add a new oom_level called OOM_LEVEL_FOREGROUND between OOM_LEVEL_MOST_RECENTLY_USED and OOM_LEVEL_FOREGROUND_AND_PROC to choose victims only from foreground status app group. Although all foreground apps are contained in OOM_LEVEL_FOREGROUND_AND_PROC group, it also contains process in /proc. Change-Id: Ie257c8a280afe89eaa750075aa09a7f8d6167396 Signed-off-by: Unsung Lee --- src/common/cgroup/memory-cgroup.c | 4 ++++ src/common/cgroup/memory-cgroup.h | 1 + src/resource-limiter/memory/lowmem.c | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/src/common/cgroup/memory-cgroup.c b/src/common/cgroup/memory-cgroup.c index ebde437..1aa7805 100644 --- a/src/common/cgroup/memory-cgroup.c +++ b/src/common/cgroup/memory-cgroup.c @@ -104,6 +104,8 @@ int cgroup_get_lowest_oom_score_adj(enum oom_level oom_level) return OOMADJ_BACKGRD_UNLOCKED + OOMADJ_APP_INCREASE; case OOM_LEVEL_BACKGROUND_MOST_RECENTLY_USED: return OOMADJ_BACKGRD_PERCEPTIBLE; + case OOM_LEVEL_FOREGROUND: + return OOMADJ_FOREGRD_LOCKED; case OOM_LEVEL_FOREGROUND_AND_PROC: return OOMADJ_SU; default: @@ -122,6 +124,8 @@ int cgroup_get_highest_oom_score_adj(enum oom_level oom_level) return OOMADJ_APP_MAX; case OOM_LEVEL_BACKGROUND_MOST_RECENTLY_USED: return OOMADJ_BACKGRD_UNLOCKED; + case OOM_LEVEL_FOREGROUND: + return OOMADJ_FOREGRD_UNLOCKED; case OOM_LEVEL_FOREGROUND_AND_PROC: return OOMADJ_FOREGRD_UNLOCKED; default: diff --git a/src/common/cgroup/memory-cgroup.h b/src/common/cgroup/memory-cgroup.h index 5ae3ffa..974208c 100644 --- a/src/common/cgroup/memory-cgroup.h +++ b/src/common/cgroup/memory-cgroup.h @@ -75,6 +75,7 @@ enum { enum oom_level { OOM_LEVEL_BACKGROUND_LEAST_RECENTLY_USED, OOM_LEVEL_BACKGROUND_MOST_RECENTLY_USED, + OOM_LEVEL_FOREGROUND, OOM_LEVEL_FOREGROUND_AND_PROC, OOM_LEVEL_ALL, }; diff --git a/src/resource-limiter/memory/lowmem.c b/src/resource-limiter/memory/lowmem.c index ef48f63..02d3c14 100644 --- a/src/resource-limiter/memory/lowmem.c +++ b/src/resource-limiter/memory/lowmem.c @@ -868,6 +868,12 @@ retry: goto retry; } else if ((oom_level == OOM_LEVEL_BACKGROUND_MOST_RECENTLY_USED) && (ctl->flags & OOM_IN_DEPTH)) { + oom_level = OOM_LEVEL_FOREGROUND; + if(ctl->flags & OOM_FORCE) + max_victim_cnt = FOREGROUND_VICTIMS; + goto retry; + } else if ((oom_level == OOM_LEVEL_FOREGROUND) + && (ctl->flags & OOM_IN_DEPTH)) { oom_level = OOM_LEVEL_FOREGROUND_AND_PROC; if(ctl->flags & OOM_FORCE) max_victim_cnt = FOREGROUND_VICTIMS; -- 2.7.4