CMA related memory questions

Heesub Shin heesub.shin at samsung.com
Thu Jan 29 19:25:24 PST 2015



On 01/30/2015 11:57 AM, Jun Nie wrote:
> On 2015年01月30日 10:36, Jun Nie wrote:
>> Hi Marek & Arnd,
>>
>> Did you ever know issue that free CMA memory is high, but system is
>> hungry for memory and page cache is very low? I am enabling CMA in
>> Android on my board with 512MB memory and see FreeMem in /proc/meminfo
>> increase a lot with CMA comparing the reservation solution on boot. But
>> I find system is not borrowing memory from CMA pool when running 3dmark
>> (high webkit workload at start). Because the FreeMem size is high, but
>> cache size decreasing significantly to several MB during benchmark run,
>> I suppose system is trying to reclaim memory from pagecache for new
>> allocation. My question is that what API that page cache and webkit
>> related functionality are using to allocate memory. Maybe page cache
>> require memory that is not movable/reclaimable memory, where we may have
>> optimization to go thru dma_alloc_xxx to borrow CMA memory? I suppose
>> app level memory allocation shall be movable/reclaimable memory and can
>> borrow from CMA pool, but not sure whether the flag match the
>> movable/reclaimable memory and go thru the right path.
>>
>> Could you help share your experience/thoughts on this? Thanks!

CC'ed linux-mm at kvack.org

__zone_watermark_ok() assumes that free pages from CMA pageblock are not 
free when ALLOC_CMA is not set on alloc_flags. The main goal was to 
force core mm to keep some non-CMA always free and thus let kernel to 
allocate a few unmovable pages from any context (including atomic, irq, 
etc.). However, this behavior may cause excessive page reclamation as it 
is sometimes very hard to satisfy the high wmark + balance_gap with only 
non-CMA pages and reclaiming CMA pages does not help at all.

It is observed that page cache pages are excessively reclaimed and 
entire system falls into thrashing even though the amount of free pages 
are much higer than the high wmark. In this case, majority of the free 
pages were from CMA page block (and about 30% pages in highmem zone were 
from CMA pageblock). Therefore, kswapd kept running and reclaiming too 
many pages. Although it is relatively rare and only observed on a 
specific workload, the device gets in an unresponsive state for a while 
(up to 10 secs), once it happens.

regards,
heesub

>>
>>
>> B.R.
>> Jun
>
> Add more people.
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel



More information about the linux-arm-kernel mailing list