From 58891d59b79640d9f32c13e556674a73b70110d8 Mon Sep 17 00:00:00 2001 From: Robert Benea Date: Mon, 31 Jul 2017 17:15:20 -0700 Subject: [PATCH] Make lmkd memory pressure levels configurable. By doing so different platforms can customize them accordingly. For instance a low mem, 512MB device can do ro.lmk.medium=400, while a device with more memory can keep the default(800). Test: tested on gobo. Bug: 64316084 Change-Id: Ifc4f3853bc06f30488adb25883ccd9aaf683ba9b --- lmkd/lmkd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c index c0953158d..27cc91b75 100644 --- a/lmkd/lmkd.c +++ b/lmkd/lmkd.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -72,6 +73,9 @@ static int mpevfd[2]; #define CRITICAL_INDEX 1 #define MEDIUM_INDEX 0 +static int medium_oomadj; +static int critical_oomadj; + /* control socket listen and data */ static int ctrl_lfd; static int ctrl_dfd = -1; @@ -643,7 +647,7 @@ static void mp_event_common(bool is_critical) { int ret; unsigned long long evcount; bool first = true; - int min_adj_score = is_critical ? 0 : 800; + int min_adj_score = is_critical ? critical_oomadj : medium_oomadj; int index = is_critical ? CRITICAL_INDEX : MEDIUM_INDEX; ret = read(mpevfd[index], &evcount, sizeof(evcount)); @@ -822,6 +826,9 @@ int main(int argc __unused, char **argv __unused) { .sched_priority = 1, }; + medium_oomadj = property_get_int32("ro.lmk.medium", 800); + critical_oomadj = property_get_int32("ro.lmk.critical", 0); + mlockall(MCL_FUTURE); sched_setscheduler(0, SCHED_FIFO, ¶m); if (!init())