• Baoquan He's avatar
    mm/page_alloc.c: clear out zone->lowmem_reserve[] if the zone is empty · f6366156
    Baoquan He authored
    When requesting memory allocation from a specific zone is not satisfied,
    it will fall to lower zone to try allocating memory.  In this case, lower
    zone's ->lowmem_reserve[] will help protect its own memory resource.  The
    higher the relevant ->lowmem_reserve[] is, the harder the upper zone can
    get memory from this lower zone.
    
    However, this protection mechanism should be applied to populated zone,
    but not an empty zone. So filling ->lowmem_reserve[] for empty zone is
    not necessary, and may mislead people that it's valid data in that zone.
    
    Node 2, zone      DMA
      pages free     0
            min      0
            low      0
            high     0
            spanned  0
            present  0
            managed  0
            protection: (0, 0, 1024, 1024)
    Node 2, zone    DMA32
      pages free     0
            min      0
            low      0
            high     0
            spanned  0
            present  0
            managed  0
            protection: (0, 0, 1024, 1024)
    Node 2, zone   Normal
      per-node stats
          nr_inactive_anon 0
          nr_active_anon 143
          nr_inactive_file 0
          nr_active_file 0
          nr_unevictable 0
          nr_slab_reclaimable 45
          nr_slab_unreclaimable 254
    
    Here clear out zone->lowmem_reserve[] if zone is empty.
    Signed-off-by: default avatarBaoquan He <bhe@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20200402140113.3696-3-bhe@redhat.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f6366156
page_alloc.c 241 KB