• L
    mempolicy: mPOL_PREFERRED cleanups for "local allocation" · 53f2556b
    Lee Schermerhorn 提交于
    Here are a couple of "cleanups" for MPOL_PREFERRED behavior when
    v.preferred_node < 0 -- i.e., "local allocation":
    
    1)  [do_]get_mempolicy() calls the now renamed get_policy_nodemask()
        to fetch the nodemask associated with a policy.  Currently,
        get_policy_nodemask() returns the set of nodes with memory, when
        the policy 'mode' is 'PREFERRED, and the preferred_node is < 0.
        Change to return an empty nodemask, as this is what was specified
        to achieve "local allocation".
    
    2)  When a task is moved into a [new] cpuset, mpol_rebind_policy() is
        called to adjust any task and vma policy nodes to be valid in the
        new cpuset.  However, when the policy is MPOL_PREFERRED, and the
        preferred_node is <0, no rebind is necessary.  The "local allocation"
        indication is valid in any cpuset.  Existing code will "do the right
        thing" because node_remap() will just return the argument node when
        it is outside of the valid range of node ids.  However, I think it is
        clearer and cleaner to skip the remap explicitly in this case.
    
    3)  mpol_to_str() produces a printable, "human readable" string from a
        struct mempolicy.  For MPOL_PREFERRED with preferred_node <0,  show
        "local", as this indicates local allocation, as the task migrates
        among nodes.  Note that this matches the usage of "local allocation"
        in libnuma() and numactl.  Without this change, I believe that node_set()
        [via set_bit()] will set bit 31, resulting in a misleading display.
    Signed-off-by: NLee Schermerhorn <lee.schermerhorn@hp.com>
    Cc: Christoph Lameter <clameter@sgi.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: Andi Kleen <ak@suse.de>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    53f2556b
mempolicy.c 55.1 KB