On 2015/7/14 17:28, Michal Hocko wrote: > On Tue 14-07-15 17:14:40, Xishi Qiu wrote: >> On 2015/7/14 17:00, Michal Hocko wrote: >> >>> On Tue 14-07-15 16:42:16, Xishi Qiu wrote: >>>> On 2015/7/14 16:15, Michal Hocko wrote: >>>> >>>>> On Tue 14-07-15 07:11:34, Xuzhichuang wrote: >>> [...] >>>>>> Jul 10 12:33:03 BMS_CNA04 kernel: [18136514.138968] DMA32: 188513*4kB >>>>>> 29459*8kB 2*16kB 2*32kB 1*64kB 0*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB >>>>>> 0*4096kB = 990396kB >>>>> >>>>> Moreover your allocation request was oreder 2 and you do not have much >>>>> memory there because most of the free memory is in order-0-2. >>>>> >>>> >>>> Hi Michal, >>>> >>>> order=2 -> alloc 16kb memory, and DMA32 still has 2*16kB 2*32kB 1*64kB >>>> 1*512kB, >>>> so you mean this large buddy block was reclaimed during the moment of oom >>>> and >>>> print, right? >>> >>> Not really. Those high order blocks are inaccessible for your GFP_KERNEL >>> allocation. See __zone_watermark_ok. >>> >> >> I know, some of them are from reserved memory(MIGRATE_RESERVE), right? > > No. The watermark is calculated per order. And you have almost all the > free memory in the lower orders. From a quick glance it seems that even > order-1 allocations wouldn't fit into min watermark.
So we can't alloc memory because it doesn't fit the watermark, and the large buddy blocks maybe from reserved, or maybe not, right? Thanks, Xishi Qiu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

