lkml.org 
[lkml]   [2017]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V2 3/3] mm: Enable Buddy allocation isolation for CDM nodes
    Date
    This implements allocation isolation for CDM nodes in buddy allocator by
    discarding CDM memory zones all the time except in the cases where the gfp
    flag has got __GFP_THISNODE or the nodemask contains CDM nodes in cases
    where it is non NULL (explicit allocation request in the kernel or user
    process MPOL_BIND policy based requests).

    Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    ---
    mm/page_alloc.c | 16 ++++++++++++++++
    1 file changed, 16 insertions(+)

    diff --git a/mm/page_alloc.c b/mm/page_alloc.c
    index 84d61bb..392c24a 100644
    --- a/mm/page_alloc.c
    +++ b/mm/page_alloc.c
    @@ -64,6 +64,7 @@
    #include <linux/page_owner.h>
    #include <linux/kthread.h>
    #include <linux/memcontrol.h>
    +#include <linux/node.h>

    #include <asm/sections.h>
    #include <asm/tlbflush.h>
    @@ -2908,6 +2909,21 @@ get_page_from_freelist(gfp_t gfp_mask, unsigned int order, int alloc_flags,
    struct page *page;
    unsigned long mark;

    + /*
    + * CDM nodes get skipped if the requested gfp flag
    + * does not have __GFP_THISNODE set or the nodemask
    + * does not have any CDM nodes in case the nodemask
    + * is non NULL (explicit allocation requests from
    + * kernel or user process MPOL_BIND policy which has
    + * CDM nodes).
    + */
    + if (is_cdm_node(zone->zone_pgdat->node_id)) {
    + if (!(gfp_mask & __GFP_THISNODE)) {
    + if (!ac->nodemask)
    + continue;
    + }
    + }
    +
    if (cpusets_enabled() &&
    (alloc_flags & ALLOC_CPUSET) &&
    !__cpuset_zone_allowed(zone, gfp_mask))
    --
    2.9.3
    \
     
     \ /
      Last update: 2017-02-10 11:09    [W:13.108 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site