Merge "lmkd: Cleanup unused code for killing processes in bulk" am: d04b38b0e5

am: 46d6d26c6c

Change-Id: I7ce93b79b64d43eae08a4b316e4cbb655e3d4e06
This commit is contained in:
Suren Baghdasaryan 2018-10-29 13:44:53 -07:00 committed by android-build-merger
commit 76cc42248e

View file

@ -1291,14 +1291,12 @@ out:
}
/*
* Find processes to kill to free required number of pages.
* If pages_to_free is set to 0 only one process will be killed.
* Returns the size of the killed processes.
* Find one process to kill at or above the given oom_adj level.
* Returns size of the killed process.
*/
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 killed_size;
int pages_freed = 0;
int killed_size = 0;
#ifdef LMKD_LOG_STATS
bool lmk_state_change_start = false;
@ -1323,20 +1321,12 @@ static int find_and_kill_processes(int min_score_adj, int pages_to_free) {
LMK_STATE_CHANGE_START);
}
#endif
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;
}
break;
}
}
if (killed_size) {
break;
}
}
#ifdef LMKD_LOG_STATS
@ -1345,7 +1335,7 @@ static int find_and_kill_processes(int min_score_adj, int pages_to_free) {
}
#endif
return pages_freed;
return killed_size;
}
static int64_t get_memory_usage(struct reread_data *file_data) {
@ -1436,7 +1426,6 @@ static void mp_event_common(int data, uint32_t events __unused) {
enum vmpressure_level level = (enum vmpressure_level)data;
long other_free = 0, other_file = 0;
int min_score_adj;
int pages_to_free = 0;
int minfree = 0;
static struct reread_data mem_usage_file_data = {
.filename = MEMCG_MEMORY_USAGE,
@ -1518,9 +1507,6 @@ static void mp_event_common(int data, uint32_t events __unused) {
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;
}
@ -1576,7 +1562,7 @@ static void mp_event_common(int data, uint32_t events __unused) {
do_kill:
if (low_ram_device) {
/* 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) {
ALOGI("Nothing to kill");
}
@ -1600,10 +1586,7 @@ do_kill:
return;
}
/* 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) {
pages_to_free = low_pressure_mem.max_nr_free_pages -
mi.field.nr_free_pages;
} else {
if (mi.field.nr_free_pages >= low_pressure_mem.max_nr_free_pages) {
if (debug_process_killing) {
ALOGI("Ignoring pressure since more memory is "
"available (%" PRId64 ") than watermark (%" PRId64 ")",
@ -1614,7 +1597,7 @@ do_kill:
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) {
/* Rate limit kill reports when nothing was reclaimed */
@ -1631,15 +1614,15 @@ do_kill:
meminfo_log(&mi);
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",
pages_to_free * page_k, pages_freed * page_k,
pages_freed * page_k,
other_file * page_k, mi.field.nr_free_pages * page_k,
zi.field.totalreserve_pages * page_k,
minfree * page_k, min_score_adj);
} else {
ALOGI("Killing to reclaim %ldkB, reclaimed %ldkB at oom_adj %d",
pages_to_free * page_k, pages_freed * page_k, min_score_adj);
ALOGI("Reclaimed %ldkB at oom_adj %d",
pages_freed * page_k, min_score_adj);
}
if (report_skip_count > 0) {