• Sandipan Das's avatar
    mm/page_alloc.c: reset numa stats for boot pagesets · b418a0f9
    Sandipan Das authored
    Initially, the per-cpu pagesets of each zone are set to the boot pagesets.
    The real pagesets are allocated later but before that happens, page
    allocations do occur and the numa stats for the boot pagesets get
    incremented since they are common to all zones at that point.
    
    The real pagesets, however, are allocated for the populated zones only.
    Unpopulated zones, like those associated with memory-less nodes, continue
    using the boot pageset and end up skewing the numa stats of the
    corresponding node.
    
    E.g.
    
      $ numactl -H
      available: 2 nodes (0-1)
      node 0 cpus: 0 1 2 3
      node 0 size: 0 MB
      node 0 free: 0 MB
      node 1 cpus: 4 5 6 7
      node 1 size: 8131 MB
      node 1 free: 6980 MB
      node distances:
      node   0   1
        0:  10  40
        1:  40  10
    
      $ numastat
                                 node0           node1
      numa_hit                     108           56495
      numa_miss                      0               0
      numa_foreign                   0               0
      interleave_hit                 0            4537
      local_node                   108           31547
      other_node                     0           24948
    
    Hence, the boot pageset stats need to be cleared after the real pagesets
    are allocated.
    
    After this point, the stats of the boot pagesets do not change as page
    allocations requested for a memory-less node will either fail (if
    __GFP_THISNODE is used) or get fulfilled by a preferred zone of a
    different node based on the fallback zonelist.
    
    [sandipan@linux.ibm.com: v3]
      Link: http://lkml.kernel.org/r/20200511170356.162531-1-sandipan@linux.ibm.comSigned-off-by: default avatarSandipan Das <sandipan@linux.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: "Kirill A . Shutemov" <kirill@shutemov.name>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
    Link: http://lkml.kernel.org/r/9c9c2d1b15e37f6e6bf32f99e3100035e90c4ac9.1588868430.git.sandipan@linux.ibm.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b418a0f9
page_alloc.c 241 KB