Loading lmkd/lmkd.c +23 −13 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ static bool kill_heaviest_task; static unsigned long kill_timeout_ms; static bool use_minfree_levels; static bool per_app_memcg; static int swap_free_low_percentage; static android_log_context ctx; Loading Loading @@ -205,6 +206,7 @@ enum meminfo_field { MI_BUFFERS, MI_SHMEM, MI_UNEVICTABLE, MI_TOTAL_SWAP, MI_FREE_SWAP, MI_ACTIVE_ANON, MI_INACTIVE_ANON, Loading @@ -227,6 +229,7 @@ static const char* const meminfo_field_names[MI_FIELD_COUNT] = { "Buffers:", "Shmem:", "Unevictable:", "SwapTotal:", "SwapFree:", "Active(anon):", "Inactive(anon):", Loading @@ -249,6 +252,7 @@ union meminfo { int64_t buffers; int64_t shmem; int64_t unevictable; int64_t total_swap; int64_t free_swap; int64_t active_anon; int64_t inactive_anon; Loading Loading @@ -1353,6 +1357,10 @@ static void mp_event_common(int data, uint32_t events __unused) { } } // If we still have enough swap space available, check if we want to // ignore/downgrade pressure events. if (mi.field.free_swap >= mi.field.total_swap * swap_free_low_percentage / 100) { // If the pressure is larger than downgrade_pressure lmk will not // kill any process, since enough memory is available. if (mem_pressure > downgrade_pressure) { Loading @@ -1360,14 +1368,14 @@ static void mp_event_common(int data, uint32_t events __unused) { ALOGI("Ignore %s memory pressure", level_name[level]); } return; } else if (level == VMPRESS_LEVEL_CRITICAL && mem_pressure > upgrade_pressure) { } else if (level == VMPRESS_LEVEL_CRITICAL && mem_pressure > upgrade_pressure) { if (debug_process_killing) { ALOGI("Downgrade critical memory pressure"); } // Downgrade event, since enough memory available. level = downgrade_level(level); } } do_kill: if (low_ram_device) { Loading Loading @@ -1642,6 +1650,8 @@ int main(int argc __unused, char **argv __unused) { property_get_bool("ro.lmk.use_minfree_levels", false); per_app_memcg = property_get_bool("ro.config.per_app_memcg", low_ram_device); swap_free_low_percentage = property_get_int32("ro.lmk.swap_free_low_percentage", 10); ctx = create_android_logger(MEMINFO_LOG_TAG); Loading Loading
lmkd/lmkd.c +23 −13 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ static bool kill_heaviest_task; static unsigned long kill_timeout_ms; static bool use_minfree_levels; static bool per_app_memcg; static int swap_free_low_percentage; static android_log_context ctx; Loading Loading @@ -205,6 +206,7 @@ enum meminfo_field { MI_BUFFERS, MI_SHMEM, MI_UNEVICTABLE, MI_TOTAL_SWAP, MI_FREE_SWAP, MI_ACTIVE_ANON, MI_INACTIVE_ANON, Loading @@ -227,6 +229,7 @@ static const char* const meminfo_field_names[MI_FIELD_COUNT] = { "Buffers:", "Shmem:", "Unevictable:", "SwapTotal:", "SwapFree:", "Active(anon):", "Inactive(anon):", Loading @@ -249,6 +252,7 @@ union meminfo { int64_t buffers; int64_t shmem; int64_t unevictable; int64_t total_swap; int64_t free_swap; int64_t active_anon; int64_t inactive_anon; Loading Loading @@ -1353,6 +1357,10 @@ static void mp_event_common(int data, uint32_t events __unused) { } } // If we still have enough swap space available, check if we want to // ignore/downgrade pressure events. if (mi.field.free_swap >= mi.field.total_swap * swap_free_low_percentage / 100) { // If the pressure is larger than downgrade_pressure lmk will not // kill any process, since enough memory is available. if (mem_pressure > downgrade_pressure) { Loading @@ -1360,14 +1368,14 @@ static void mp_event_common(int data, uint32_t events __unused) { ALOGI("Ignore %s memory pressure", level_name[level]); } return; } else if (level == VMPRESS_LEVEL_CRITICAL && mem_pressure > upgrade_pressure) { } else if (level == VMPRESS_LEVEL_CRITICAL && mem_pressure > upgrade_pressure) { if (debug_process_killing) { ALOGI("Downgrade critical memory pressure"); } // Downgrade event, since enough memory available. level = downgrade_level(level); } } do_kill: if (low_ram_device) { Loading Loading @@ -1642,6 +1650,8 @@ int main(int argc __unused, char **argv __unused) { property_get_bool("ro.lmk.use_minfree_levels", false); per_app_memcg = property_get_bool("ro.config.per_app_memcg", low_ram_device); swap_free_low_percentage = property_get_int32("ro.lmk.swap_free_low_percentage", 10); ctx = create_android_logger(MEMINFO_LOG_TAG); Loading