Skip to content
  • Rik van Riel's avatar
    sched/numa, mm: Use active_nodes nodemask to limit numa migrations · 10f39042
    Rik van Riel authored
    
    
    Use the active_nodes nodemask to make smarter decisions on NUMA migrations.
    
    In order to maximize performance of workloads that do not fit in one NUMA
    node, we want to satisfy the following criteria:
    
      1) keep private memory local to each thread
    
      2) avoid excessive NUMA migration of pages
    
      3) distribute shared memory across the active nodes, to
         maximize memory bandwidth available to the workload
    
    This patch accomplishes that by implementing the following policy for
    NUMA migrations:
    
      1) always migrate on a private fault
    
      2) never migrate to a node that is not in the set of active nodes
         for the numa_group
    
      3) always migrate from a node outside of the set of active nodes,
         to a node that is in that set
    
      4) within the set of active nodes in the numa_group, only migrate
         from a node with more NUMA page faults, to a node with fewer
         NUMA page faults, with a 25% margin to avoid ping-ponging
    
    This results in most pages of a workload ending up on the actively
    used nodes, with reduced ping-ponging of pages between those nodes.
    
    Signed-off-by: default avatarRik van Riel <riel@redhat.com>
    Acked-by: default avatarMel Gorman <mgorman@suse.de>
    Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: Chegu Vinod <chegu_vinod@hp.com>
    Link: http://lkml.kernel.org/r/1390860228-21539-6-git-send-email-riel@redhat.com
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    10f39042