Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1443809
| Path | csiph.com!weretis.net!feeder4.news.weretis.net!news.mixmin.net!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | David Rientjes <rientjes@google.com> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] mem-hotplug: use GFP_HIGHUSER_MOVABLE and alloc from next node in alloc_migrate_target() |
| Date | Fri, 15 Jul 2016 00:20:03 +0200 |
| Message-ID | <rUX99-72G-45@gated-at.bofh.it> (permalink) |
| References | <rUEJb-3rU-1@gated-at.bofh.it> |
| X-Original-To | Xishi Qiu <qiuxishi@huawei.com> |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=8TJCNlGHZAFIIPMJ7RKrq0Y6gP/MfuaJgKBGXpaJsOY=; b=bb5ffuyGvE6m9ECYYBK0GMU+tWlrc0qNSlDeklmA/tpoesQDyw1s/urx46I4fGkMJS CeYERyI4GpXOSDcr1wyPPxj/76btLSUSh+HLwIhC6dGNJxEnLOCX+j+J9X3EwSQ/vrvE BxixZ3F1S78NwgiG/BcxzyHpE8GWlaFJA65kcdienZ8YyUBDJjrV5fvA+uCNanOHN/Cm S4YYE2bAAipi2LGYzaZdbfShg0XEaJyNXFoYnE1+oEK0lMijdBx5EIQFoffZ1BKZoEgW DR2FSlJBgQrFTOqtIf2yAM1GXbJZQdLWyMLTmBA5yVLM+q9spbTfnThz07giTjBCWf04 NgpA== |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=8TJCNlGHZAFIIPMJ7RKrq0Y6gP/MfuaJgKBGXpaJsOY=; b=l+tHXsBN7Oc4ORiWtp/tK5DBZ0avH0i8RElkE46GXiyCGlJKvRgCo1yUyvvj2Z7jYs 8SdwwT8Xf1rewkxGkd9xNdGS8sRVsDwtwS0qATYMp3v8AYcO5alzwfE76P1DPl/XS/Zs 2DSw4JzyshdDYI61ZK770j7iNf469amtG1iKK00mTxk3GsdA7gVEOFAZfzsma0V/m4+u ymquOBe8f94TQ/wbJfe9zSr5DYe28S7X6lgXUXpg7XLyI5R5vi3Yt8yWm1DbBhrimCzZ NcTHYhdUYQqeOBQigfaSsxzemp7ToaImDeXpEYTtxUrswebKCUx1eR2vXrfHK55dvGQQ xs1A== |
| X-Gm-Message-State | ALyK8tL7pTIOxWfK4j8dqbdEFK+ARs7zxgDTtkhCrA8zLauK01jjcGuHcAsuTd0Vpx59bmUn |
| X-Received | by 10.98.66.209 with SMTP id h78mr16184307pfd.11.1468534640281; Thu, 14 Jul 2016 15:17:20 -0700 (PDT) |
| X-X-Sender | rientjes@chino.kir.corp.google.com |
| User-Agent | Alpine 2.10 (DEB 1266 2009-07-14) |
| MIME-Version | 1.0 |
| Content-Type | TEXT/PLAIN; charset=US-ASCII |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 62 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Andrew Morton <akpm@linux-foundation.org>, Vlastimil Babka <vbabka@suse.cz>, Joonsoo Kim <iamjoonsoo.kim@lge.com>, Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>, Linux MM <linux-mm@kvack.org>, LKML <linux-kernel@vger.kernel.org> |
| X-Original-Date | Thu, 14 Jul 2016 15:17:13 -0700 (PDT) |
| X-Original-Message-ID | <alpine.DEB.2.10.1607141513320.72383@chino.kir.corp.google.com> |
| X-Original-References | <5786F81B.1070502@huawei.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1443809 |
Show key headers only | View raw
On Thu, 14 Jul 2016, Xishi Qiu wrote:
> alloc_migrate_target() is called from migrate_pages(), and the page
> is always from user space, so we can add __GFP_HIGHMEM directly.
>
> Second, when we offline a node, the new page should alloced from other
> nodes instead of the current node, because re-migrate is a waste of
> time.
>
alloc_migrate_target() is not only used from memory hotplug, it is also
used for CMA: we won't be isolating PageHuge() pages in
isolate_migratepages_range(), so this would cause a regression where we'd
be migrating memory to a remote NUMA node rather than preferring to
allocate locally.
You may find it useful to use the 'private' field of the migrate_pages()
callback to specify the node the page should preferably be migrated to.
> Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
> ---
> mm/page_isolation.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
>
> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> index 612122b..83848dc 100644
> --- a/mm/page_isolation.c
> +++ b/mm/page_isolation.c
> @@ -282,20 +282,16 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
> struct page *alloc_migrate_target(struct page *page, unsigned long private,
> int **resultp)
> {
> - gfp_t gfp_mask = GFP_USER | __GFP_MOVABLE;
> -
> /*
> - * TODO: allocate a destination hugepage from a nearest neighbor node,
> + * TODO: allocate a destination page from a nearest neighbor node,
> * accordance with memory policy of the user process if possible. For
> * now as a simple work-around, we use the next node for destination.
> */
> + int nid = next_node_in(page_to_nid(page), node_online_map);
> +
> if (PageHuge(page))
> return alloc_huge_page_node(page_hstate(compound_head(page)),
> - next_node_in(page_to_nid(page),
> - node_online_map));
> -
> - if (PageHighMem(page))
> - gfp_mask |= __GFP_HIGHMEM;
> -
> - return alloc_page(gfp_mask);
> + nid);
> + else
> + return __alloc_pages_node(nid, GFP_HIGHUSER_MOVABLE, 0);
I don't think this __alloc_pages_node() does what you think it does, it
only prefers nid here and will readily fallback to other nodes if
necessary. That is different than alloc_huge_page_node() which does no
fallback. So there's two issues with this change: (1) inconsistency
between PageHuge() and !PageHuge() behavior, and (2) the use of
__alloc_pages_node() does not match the commit description which states
"re-migrate is a waste of time."
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH] mem-hotplug: use GFP_HIGHUSER_MOVABLE and alloc from next node in alloc_migrate_target() Xishi Qiu <qiuxishi@huawei.com> - 2016-07-14 04:40 +0200
Re: [PATCH] mem-hotplug: use GFP_HIGHUSER_MOVABLE and alloc from next node in alloc_migrate_target() David Rientjes <rientjes@google.com> - 2016-07-15 00:20 +0200
Re: [PATCH] mem-hotplug: use GFP_HIGHUSER_MOVABLE and alloc from next node in alloc_migrate_target() Xishi Qiu <qiuxishi@huawei.com> - 2016-07-15 03:30 +0200
csiph-web