Re: [PATCH] ion: Consider ion pool pages as indirectly reclaimable

From: Laura Abbott
Date: Fri Apr 27 2018 - 17:31:06 EST


On 04/27/2018 02:29 AM, vjitta@xxxxxxxxxxxxxx wrote:
On 2018-04-27 10:40, vjitta@xxxxxxxxxxxxxx wrote:
On 2018-04-25 21:17, Laura Abbott wrote:
On 04/24/2018 08:43 PM, vjitta@xxxxxxxxxxxxxx wrote:
From: Vijayanand Jitta <vjitta@xxxxxxxxxxxxxx>

An issue is observed where mallocs are failing due to overcommit failure.
The failure happens when there is high ION page pool since ION page
pool is not considered reclaimable by the overcommit calculation code.
This change considers ion pool pages as indirectly reclaimable and thus
accounted as available memory in the overcommit calculation.

Signed-off-by: Vijayanand Jitta <vjitta@xxxxxxxxxxxxxx>
---
 drivers/staging/android/ion/ion_page_pool.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/android/ion/ion_page_pool.c b/drivers/staging/android/ion/ion_page_pool.c
index db8f614..9bc56eb 100644
--- a/drivers/staging/android/ion/ion_page_pool.c
+++ b/drivers/staging/android/ion/ion_page_pool.c
@@ -32,6 +32,9 @@ static void ion_page_pool_add(struct ion_page_pool *pool, struct page *page)
ÂÂÂÂÂÂÂÂÂ list_add_tail(&page->lru, &pool->low_items);
ÂÂÂÂÂÂÂÂÂ pool->low_count++;
ÂÂÂÂÂ }
+
+ÂÂÂ mod_node_page_state(page_pgdat(page), NR_INDIRECTLY_RECLAIMABLE_BYTES,
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (1 << (PAGE_SHIFT + pool->order)));
ÂÂÂÂÂ mutex_unlock(&pool->mutex);
 }
 @@ -50,6 +53,8 @@ static struct page *ion_page_pool_remove(struct ion_page_pool *pool, bool high)
ÂÂÂÂÂ }
ÂÂÂÂÂÂÂ list_del(&page->lru);
+ÂÂÂ mod_node_page_state(page_pgdat(page), NR_INDIRECTLY_RECLAIMABLE_BYTES,
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ -(1 << (PAGE_SHIFT + pool->order)));
ÂÂÂÂÂ return page;
 }


I'm sure this fixes the problem but I don't think we want to
start throwing page adjustments into Ion. Why isn't this
memory already considered reclaimable by existing calculations?

Thanks,
Laura

You can refer to discussion here https://lkml.org/lkml/2018/3/5/361 introducing
NR_INDIRECTLY_RECLAIMABLE_BYTES for the memory which is not currently considered
as reclaimable

Thanks,
Vijay

There was also discussion specific to ion in that thread you can find it here
https://lkml.org/lkml/2018/4/25/642

Thanks,
Vijay

Thanks for pointing that thread out. I'm still a little wary since
Ion is in staging but if the rest of mm are okay with it

Acked-by: Laura Abbott <labbott@xxxxxxxxxx>

Thanks,
Laura