Merge "Make bootstat container-friendly" into pi-dev
diff --git a/lmkd/README.md b/lmkd/README.md
new file mode 100644
index 0000000..ba2e83d
--- /dev/null
+++ b/lmkd/README.md
@@ -0,0 +1,60 @@
+Android Low Memory Killer Daemon
+================================
+
+
+Introduction
+------------
+
+Android Low Memory Killer Daemon (lmkd) is a process monitoring memory
+state of a running Android system and reacting to high memory pressure
+by killing the least essential process(es) to keep system performing
+at acceptable levels.
+
+
+Background
+----------
+
+Historically on Android systems memory monitoring and killing of
+non-essential processes was handled by a kernel lowmemorykiller driver.
+Since Linux Kernel 4.12 the lowmemorykiller driver has been removed and
+instead userspace lmkd daemon performs these tasks.
+
+
+Android Properties
+------------------
+
+lmkd can be configured on a particular system using the following Android
+properties:
+
+ ro.config.low_ram: choose between low-memory vs high-performance
+ device. Default = false.
+
+ ro.lmk.low: min oom_adj score for processes eligible to be
+ killed at low vmpressure level. Default = 1001
+ (disabled)
+
+ ro.lmk.medium: min oom_adj score for processes eligible to be
+ killed at medium vmpressure level. Default = 800
+ (non-essential processes)
+
+ ro.lmk.critical: min oom_adj score for processes eligible to be
+ killed at critical vmpressure level. Default = 0
+ (all processes)
+
+ ro.lmk.critical_upgrade: enables upgrade to critical level. Default = false
+
+ ro.lmk.upgrade_pressure: max mem_pressure at which level will be upgraded
+ because system is swapping too much. Default = 100
+ (disabled)
+
+ ro.lmk.downgrade_pressure: min mem_pressure at which vmpressure event will
+ be ignored because enough free memory is still
+ available. Default = 100 (disabled)
+
+ ro.lmk.kill_heaviest_task: kill heaviest eligible task (best decision) vs.
+ any eligible task (fast decision). Default = false
+
+ ro.lmk.kill_timeout_ms: duration in ms after a kill when no additional
+ kill will be done, Default = 0 (disabled)
+
+ ro.lmk.debug: enable lmkd debug logs, Default = false
diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c
index ee2f343..5f27dfc 100644
--- a/lmkd/lmkd.c
+++ b/lmkd/lmkd.c
@@ -112,7 +112,7 @@
static bool enable_pressure_upgrade;
static int64_t upgrade_pressure;
static int64_t downgrade_pressure;
-static bool is_go_device;
+static bool low_ram_device;
static bool kill_heaviest_task;
static unsigned long kill_timeout_ms;
@@ -771,7 +771,7 @@
struct proc *procp;
while (true) {
- if (is_go_device)
+ if (low_ram_device)
procp = proc_adj_lru(i);
else
procp = proc_get_heaviest(i);
@@ -962,7 +962,7 @@
}
do_kill:
- if (is_go_device) {
+ if (low_ram_device) {
/* For Go devices kill only one task */
if (find_and_kill_processes(level, 0) == 0) {
if (debug_process_killing) {
@@ -1199,7 +1199,7 @@
(int64_t)property_get_int32("ro.lmk.downgrade_pressure", 100);
kill_heaviest_task =
property_get_bool("ro.lmk.kill_heaviest_task", true);
- is_go_device = property_get_bool("ro.config.low_ram", false);
+ low_ram_device = property_get_bool("ro.config.low_ram", false);
kill_timeout_ms =
(unsigned long)property_get_int32("ro.lmk.kill_timeout_ms", 0);