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

vjitta
2018-04-27T09:29:31Z

On 2018-04-27 10:40, vjitta@codeaurora.org wrote:
> 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

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