• Zhaoyang Huang's avatar
    mm: skip CMA pages when they are not available · 5da226db
    Zhaoyang Huang authored
    This patch fixes unproductive reclaiming of CMA pages by skipping them
    when they are not available for current context.  It arises from the below
    OOM issue, which was caused by a large proportion of MIGRATE_CMA pages
    among free pages.
    
    [   36.172486] [03-19 10:05:52.172] ActivityManager: page allocation failure: order:0, mode:0xc00(GFP_NOIO), nodemask=(null),cpuset=foreground,mems_allowed=0
    [   36.189447] [03-19 10:05:52.189] DMA32: 0*4kB 447*8kB (C) 217*16kB (C) 124*32kB (C) 136*64kB (C) 70*128kB (C) 22*256kB (C) 3*512kB (C) 0*1024kB 0*2048kB 0*4096kB = 35848kB
    [   36.193125] [03-19 10:05:52.193] Normal: 231*4kB (UMEH) 49*8kB (MEH) 14*16kB (H) 13*32kB (H) 8*64kB (H) 2*128kB (H) 0*256kB 1*512kB (H) 0*1024kB 0*2048kB 0*4096kB = 3236kB
    ...
    [   36.234447] [03-19 10:05:52.234] SLUB: Unable to allocate memory on node -1, gfp=0xa20(GFP_ATOMIC)
    [   36.234455] [03-19 10:05:52.234] cache: ext4_io_end, object size: 64, buffer size: 64, default order: 0, min order: 0
    [   36.234459] [03-19 10:05:52.234] node 0: slabs: 53,objs: 3392, free: 0
    
    This change further decreases the chance for wrong OOMs in the presence
    of a lot of CMA memory.
    
    [david@redhat.com: changelog addition]
    Link: https://lkml.kernel.org/r/1685501461-19290-1-git-send-email-zhaoyang.huang@unisoc.comSigned-off-by: default avatarZhaoyang Huang <zhaoyang.huang@unisoc.com>
    Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
    Cc: ke.wang <ke.wang@unisoc.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    5da226db
vmscan.c 222 KB