Merge "lmkd: Cleanup unused code for killing processes in bulk"
am: d04b38b0e5 Change-Id: Icbbc888b5a2049a94e55e48eaa9510981c114ebf
This commit is contained in:
commit
68fe0cbc93
47
lmkd.c
47
lmkd.c
|
|
@ -1335,14 +1335,12 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find processes to kill to free required number of pages.
|
* Find one process to kill at or above the given oom_adj level.
|
||||||
* If pages_to_free is set to 0 only one process will be killed.
|
* Returns size of the killed process.
|
||||||
* Returns the size of the killed processes.
|
|
||||||
*/
|
*/
|
||||||
static int find_and_kill_processes(int min_score_adj, int pages_to_free) {
|
static int find_and_kill_process(int min_score_adj) {
|
||||||
int i;
|
int i;
|
||||||
int killed_size;
|
int killed_size = 0;
|
||||||
int pages_freed = 0;
|
|
||||||
|
|
||||||
#ifdef LMKD_LOG_STATS
|
#ifdef LMKD_LOG_STATS
|
||||||
bool lmk_state_change_start = false;
|
bool lmk_state_change_start = false;
|
||||||
|
|
@ -1367,19 +1365,11 @@ static int find_and_kill_processes(int min_score_adj, int pages_to_free) {
|
||||||
LMK_STATE_CHANGE_START);
|
LMK_STATE_CHANGE_START);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
break;
|
||||||
pages_freed += killed_size;
|
|
||||||
if (pages_freed >= pages_to_free) {
|
|
||||||
|
|
||||||
#ifdef LMKD_LOG_STATS
|
|
||||||
if (enable_stats_log && lmk_state_change_start) {
|
|
||||||
stats_write_lmk_state_changed(log_ctx, LMK_STATE_CHANGED,
|
|
||||||
LMK_STATE_CHANGE_STOP);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return pages_freed;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (killed_size) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1389,7 +1379,7 @@ static int find_and_kill_processes(int min_score_adj, int pages_to_free) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return pages_freed;
|
return killed_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int64_t get_memory_usage(struct reread_data *file_data) {
|
static int64_t get_memory_usage(struct reread_data *file_data) {
|
||||||
|
|
@ -1480,7 +1470,6 @@ static void mp_event_common(int data, uint32_t events __unused) {
|
||||||
enum vmpressure_level level = (enum vmpressure_level)data;
|
enum vmpressure_level level = (enum vmpressure_level)data;
|
||||||
long other_free = 0, other_file = 0;
|
long other_free = 0, other_file = 0;
|
||||||
int min_score_adj;
|
int min_score_adj;
|
||||||
int pages_to_free = 0;
|
|
||||||
int minfree = 0;
|
int minfree = 0;
|
||||||
static struct reread_data mem_usage_file_data = {
|
static struct reread_data mem_usage_file_data = {
|
||||||
.filename = MEMCG_MEMORY_USAGE,
|
.filename = MEMCG_MEMORY_USAGE,
|
||||||
|
|
@ -1562,9 +1551,6 @@ static void mp_event_common(int data, uint32_t events __unused) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free up enough pages to push over the highest minfree level */
|
|
||||||
pages_to_free = lowmem_minfree[lowmem_targets_size - 1] -
|
|
||||||
((other_free < other_file) ? other_free : other_file);
|
|
||||||
goto do_kill;
|
goto do_kill;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1620,7 +1606,7 @@ static void mp_event_common(int data, uint32_t events __unused) {
|
||||||
do_kill:
|
do_kill:
|
||||||
if (low_ram_device) {
|
if (low_ram_device) {
|
||||||
/* For Go devices kill only one task */
|
/* For Go devices kill only one task */
|
||||||
if (find_and_kill_processes(level_oomadj[level], 0) == 0) {
|
if (find_and_kill_process(level_oomadj[level]) == 0) {
|
||||||
if (debug_process_killing) {
|
if (debug_process_killing) {
|
||||||
ALOGI("Nothing to kill");
|
ALOGI("Nothing to kill");
|
||||||
}
|
}
|
||||||
|
|
@ -1644,10 +1630,7 @@ do_kill:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* Free up enough memory to downgrate the memory pressure to low level */
|
/* Free up enough memory to downgrate the memory pressure to low level */
|
||||||
if (mi.field.nr_free_pages < low_pressure_mem.max_nr_free_pages) {
|
if (mi.field.nr_free_pages >= low_pressure_mem.max_nr_free_pages) {
|
||||||
pages_to_free = low_pressure_mem.max_nr_free_pages -
|
|
||||||
mi.field.nr_free_pages;
|
|
||||||
} else {
|
|
||||||
if (debug_process_killing) {
|
if (debug_process_killing) {
|
||||||
ALOGI("Ignoring pressure since more memory is "
|
ALOGI("Ignoring pressure since more memory is "
|
||||||
"available (%" PRId64 ") than watermark (%" PRId64 ")",
|
"available (%" PRId64 ") than watermark (%" PRId64 ")",
|
||||||
|
|
@ -1658,7 +1641,7 @@ do_kill:
|
||||||
min_score_adj = level_oomadj[level];
|
min_score_adj = level_oomadj[level];
|
||||||
}
|
}
|
||||||
|
|
||||||
pages_freed = find_and_kill_processes(min_score_adj, 0);
|
pages_freed = find_and_kill_process(min_score_adj);
|
||||||
|
|
||||||
if (pages_freed == 0) {
|
if (pages_freed == 0) {
|
||||||
/* Rate limit kill reports when nothing was reclaimed */
|
/* Rate limit kill reports when nothing was reclaimed */
|
||||||
|
|
@ -1675,15 +1658,15 @@ do_kill:
|
||||||
meminfo_log(&mi);
|
meminfo_log(&mi);
|
||||||
|
|
||||||
if (use_minfree_levels) {
|
if (use_minfree_levels) {
|
||||||
ALOGI("Killing to reclaim %ldkB, reclaimed %ldkB, cache(%ldkB) and "
|
ALOGI("Reclaimed %ldkB, cache(%ldkB) and "
|
||||||
"free(%" PRId64 "kB)-reserved(%" PRId64 "kB) below min(%ldkB) for oom_adj %d",
|
"free(%" PRId64 "kB)-reserved(%" PRId64 "kB) below min(%ldkB) for oom_adj %d",
|
||||||
pages_to_free * page_k, pages_freed * page_k,
|
pages_freed * page_k,
|
||||||
other_file * page_k, mi.field.nr_free_pages * page_k,
|
other_file * page_k, mi.field.nr_free_pages * page_k,
|
||||||
zi.field.totalreserve_pages * page_k,
|
zi.field.totalreserve_pages * page_k,
|
||||||
minfree * page_k, min_score_adj);
|
minfree * page_k, min_score_adj);
|
||||||
} else {
|
} else {
|
||||||
ALOGI("Killing to reclaim %ldkB, reclaimed %ldkB at oom_adj %d",
|
ALOGI("Reclaimed %ldkB at oom_adj %d",
|
||||||
pages_to_free * page_k, pages_freed * page_k, min_score_adj);
|
pages_freed * page_k, min_score_adj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (report_skip_count > 0) {
|
if (report_skip_count > 0) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue