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

vjitta
2018-04-27T05:10:36Z

On 2018-04-25 21:17, Laura Abbott wrote:
> On 04/24/2018 08:43 PM, vjitta@codeaurora.org wrote:
>> From: Vijayanand Jitta <vjitta@codeaurora.org>
>>
>> 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@codeaurora.org>
>> ---
>> 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