On 10/11/2011 12:50 PM, Marek Szyprowski wrote:
Hello,
On Tuesday, October 11, 2011 9:30 AM Maxime Coquelin wrote:
On 10/11/2011 09:17 AM, Marek Szyprowski wrote:
On Monday, October 10, 2011 2:08 PM Maxime Coquelin wrote:
During our stress tests, we encountered some problems : 1) Contiguous allocation lockup: When system RAM is full of Anon pages, if we try to allocate a
contiguous buffer greater than the min_free value, we face a dma_alloc_from_contiguous lockup. The expected result would be dma_alloc_from_contiguous() to fail. The problem is reproduced systematically on our side. Thanks for the report. Do you use Android's lowmemorykiller? I haven't tested CMA on Android kernel yet. I have no idea how it will interfere with Android patches.
The software used for this test (v16) is a generic 3.0 Kernel and a minimal filesystem using Busybox.
I'm really surprised. Could you elaborate a bit how to trigger this issue?
At system startup, I drop caches (sync && echo 3 > /proc/sys/vm/drop_caches) and check how much memory is free. For example, in my case, only 15MB is used on the 270MB available on the system, so I got 255MB of free memory. Note that the min_free is 4MB in my case. In userspace, I allocate 230MB using malloc(), the free memory is now 25MB. Finaly, I ask for a contiguous allocation of 64MB using CMA, the result is a lockup in dma_alloc_from_contiguous().
I've did several tests and I never get a lockup. Allocation failed from time to time though.
When it succeed, what is the behaviour on your side? Is the OOM triggered?
Regards, Maxime