[automerger skipped] Skip ab/6749736 in stage. am: e6ad9cc974 -s ours
am skip reason: Change-Id I21557b59bcb67736b552b7f5fa3b37045851a4dd with SHA-1 5ac19eb471 is in history
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/12797482
Change-Id: I48f4da311c68103df2f205d1127bb3470001e461
diff --git a/lmkd.cpp b/lmkd.cpp
index 8d872df..964bfc4 100644
--- a/lmkd.cpp
+++ b/lmkd.cpp
@@ -2271,9 +2271,11 @@
* Returns lowest breached watermark or WMARK_NONE.
*/
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 high_wmark = (watermarks->high_wmark * margin) / 100;
if (nr_free_pages < watermarks->min_wmark) {
return WMARK_MIN;
@@ -2281,7 +2283,7 @@
if (nr_free_pages < watermarks->low_wmark) {
return WMARK_LOW;
}
- if (nr_free_pages < watermarks->high_wmark) {
+ if (nr_free_pages < high_wmark) {
return WMARK_HIGH;
}
return WMARK_NONE;
@@ -2470,7 +2472,7 @@
}
/* 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