[BUG] Page allocation failures with newest kernels

Marcin Wojtas mw at semihalf.com
Tue Jun 7 10:36:57 PDT 2016


Hi Mel,



2016-06-03 14:36 GMT+02:00 Mel Gorman <mgorman at techsingularity.net>:
> On Fri, Jun 03, 2016 at 01:57:06PM +0200, Marcin Wojtas wrote:
>> >> For the record: the newest kernel I was able to reproduce the dumps
>> >> was v4.6: http://pastebin.com/ekDdACn5. I've just checked v4.7-rc1,
>> >> which comprise a lot (mainly yours) changes in mm, and I'm wondering
>> >> if there may be a spot fix or rather a series of improvements. I'm
>> >> looking forward to your opinion and would be grateful for any advice.
>> >>
>> >
>> > I don't believe we want to reintroduce the reserve to cope with CMA. One
>> > option would be to widen the gap between low and min watermark by the
>> > size of the CMA region. The effect would be to wake kswapd earlier which
>> > matters considering the context of the failing allocation was
>> > GFP_ATOMIC.
>>
>> Of course my intention is not reintroducing anything that's gone
>> forever, but just to find out way to overcome current issues. Do you
>> mean increasing CMA size?
>
> No. There is a gap between the low and min watermarks. At the low point,
> kswapd is woken up and at the min point allocation requests either
> either direct reclaim or fail if they are atomic. What I'm suggesting
> is that you adjust the low watermark and add the size of the CMA area
> to it so that kswapd is woken earlier. The watermarks are calculated in
> __setup_per_zone_wmarks
>

I printed all zones' settings, whose watermarks are configured within
__setup_per_zone_wmarks(). There are three DMA, Normal and Movable -
only first one's watermarks have non-zero values. Increasing DMA min
watermark didn't help. I also played with increasing
/proc/sys/vm/min_free_kbytes from ~2560 to 16000
(__setup_per_zone_wmarks() recalculates watermarks after that) - no
effect either.

Best regards,
Marcin



More information about the linux-arm-kernel mailing list