From 518668e04311adb7b027f7e3f07d2c293c2e2e98 Mon Sep 17 00:00:00 2001 From: Suren Baghdasaryan Date: Fri, 13 Apr 2018 11:36:46 -0700 Subject: [PATCH] lmkd: Add lmkd README file Add README file providing lmkd overview and description for its properties. Bug: 77299493 Bug: 75322373 Change-Id: I30236dd4ccaa2b48c31dfb80b63f0b82b49b5744 Merged-In: I30236dd4ccaa2b48c31dfb80b63f0b82b49b5744 Signed-off-by: Suren Baghdasaryan (cherry picked from commit 7e5dea82a5a2f86117722ff11c93bc672ffb7903) --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ba2e83d --- /dev/null +++ b/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