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
This commit is contained in:
Robert Benea 2017-07-31 17:15:20 -07:00
parent 58d6a13832
commit 57397dc822
1 changed files with 8 additions and 1 deletions

9
lmkd.c
View File

@ -31,6 +31,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
#include <cutils/properties.h>
#include <cutils/sockets.h> #include <cutils/sockets.h>
#include <log/log.h> #include <log/log.h>
#include <processgroup/processgroup.h> #include <processgroup/processgroup.h>
@ -72,6 +73,9 @@ static int mpevfd[2];
#define CRITICAL_INDEX 1 #define CRITICAL_INDEX 1
#define MEDIUM_INDEX 0 #define MEDIUM_INDEX 0
static int medium_oomadj;
static int critical_oomadj;
/* control socket listen and data */ /* control socket listen and data */
static int ctrl_lfd; static int ctrl_lfd;
static int ctrl_dfd = -1; static int ctrl_dfd = -1;
@ -643,7 +647,7 @@ static void mp_event_common(bool is_critical) {
int ret; int ret;
unsigned long long evcount; unsigned long long evcount;
bool first = true; 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; int index = is_critical ? CRITICAL_INDEX : MEDIUM_INDEX;
ret = read(mpevfd[index], &evcount, sizeof(evcount)); ret = read(mpevfd[index], &evcount, sizeof(evcount));
@ -822,6 +826,9 @@ int main(int argc __unused, char **argv __unused) {
.sched_priority = 1, .sched_priority = 1,
}; };
medium_oomadj = property_get_int32("ro.lmk.medium", 800);
critical_oomadj = property_get_int32("ro.lmk.critical", 0);
mlockall(MCL_FUTURE); mlockall(MCL_FUTURE);
sched_setscheduler(0, SCHED_FIFO, &param); sched_setscheduler(0, SCHED_FIFO, &param);
if (!init()) if (!init())