lmkd: Add a margin for watermark when swap free is low am: 95551f816a

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/12361021

Change-Id: I241e3dd3ffafded55f303e91b61ed0c6edadc272
This commit is contained in:
Martin Liu 2020-08-14 14:14:26 +00:00 committed by Automerger Merge Worker
commit 0b55174ae7
1 changed files with 5 additions and 3 deletions

View File

@ -2253,9 +2253,11 @@ struct zone_watermarks {
* Returns lowest breached watermark or WMARK_NONE. * Returns lowest breached watermark or WMARK_NONE.
*/ */
static enum zone_watermark get_lowest_watermark(union meminfo *mi, static enum zone_watermark get_lowest_watermark(union meminfo *mi,
struct zone_watermarks *watermarks) struct zone_watermarks *watermarks,
long margin)
{ {
int64_t nr_free_pages = mi->field.nr_free_pages - mi->field.cma_free; int64_t nr_free_pages = mi->field.nr_free_pages - mi->field.cma_free;
int64_t high_wmark = (watermarks->high_wmark * margin) / 100;
if (nr_free_pages < watermarks->min_wmark) { if (nr_free_pages < watermarks->min_wmark) {
return WMARK_MIN; return WMARK_MIN;
@ -2263,7 +2265,7 @@ static enum zone_watermark get_lowest_watermark(union meminfo *mi,
if (nr_free_pages < watermarks->low_wmark) { if (nr_free_pages < watermarks->low_wmark) {
return WMARK_LOW; return WMARK_LOW;
} }
if (nr_free_pages < watermarks->high_wmark) { if (nr_free_pages < high_wmark) {
return WMARK_HIGH; return WMARK_HIGH;
} }
return WMARK_NONE; return WMARK_NONE;
@ -2429,7 +2431,7 @@ static void mp_event_psi(int data, uint32_t events, struct polling_params *poll_
} }
/* Find out which watermark is breached if any */ /* Find out which watermark is breached if any */
wmark = get_lowest_watermark(&mi, &watermarks); wmark = get_lowest_watermark(&mi, &watermarks, swap_is_low ? 115 : 100);
/* /*
* TODO: move this logic into a separate function * TODO: move this logic into a separate function