From: Jiang Liu <jiang.liu@linux.intel.com>
To: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Mel Gorman <mgorman@suse.de>,
Mike Galbraith <umgwanakikbuti@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Tang Chen <tangchen@cn.fujitsu.com>, Tejun Heo <tj@kernel.org>,
Tony Luck <tony.luck@intel.com>,
linux-mm@kvack.org, linux-hotplug@vger.kernel.org,
linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [Patch V3 2/9] kernel/profile.c: Replace cpu_to_mem() with cpu_to_node()
Date: Fri, 09 Oct 2015 02:35:51 +0000 [thread overview]
Message-ID: <56172807.4090906@linux.intel.com> (raw)
In-Reply-To: <alpine.DEB.2.10.1508191657330.30666@chino.kir.corp.google.com>
On 2015/8/20 8:00, David Rientjes wrote:
> On Wed, 19 Aug 2015, Jiang Liu wrote:
>
>> On 2015/8/18 8:31, David Rientjes wrote:
>>> On Mon, 17 Aug 2015, Jiang Liu wrote:
>>>
>>>> Function profile_cpu_callback() allocates memory without specifying
>>>> __GFP_THISNODE flag, so replace cpu_to_mem() with cpu_to_node()
>>>> because cpu_to_mem() may cause suboptimal memory allocation if
>>>> there's no free memory on the node returned by cpu_to_mem().
>>>>
>>>
>>> Why is cpu_to_node() better with regard to free memory and NUMA locality?
>> Hi David,
>> Thanks for review. This is a special case pointed out by Tejun.
>> For the imagined topology, A<->B<->X<->C<->D, where A, B, C, D has
>> memory and X is memoryless.
>> Possible fallback lists are:
>> B: [ B, A, C, D]
>> X: [ B, C, A, D]
>> C: [ C, D, B, A]
>>
>> cpu_to_mem(X) will either return B or C. Let's assume it returns B.
>> Then we will use "B: [ B, A, C, D]" to allocate memory for X, which
>> is not the optimal fallback list for X. And cpu_to_node(X) returns
>> X, and "X: [ B, C, A, D]" is the optimal fallback list for X.
>
> Ok, that makes sense, but I would prefer that this
> alloc_pages_exact_node() change to alloc_pages_node() since, as you
> mention in your commit message, __GFP_THISNODE is not set.
Hi David,
Sorry for slow response due to personal reasons!
Function alloc_pages_exact_node() has been renamed as
__alloc_pages_node() by commit 96db800f5d73, and __alloc_pages_node()
is a slightly optimized version of alloc_pages_node() which doesn't
fallback to current node for nid = NUMA_NO_NODE case. So it would
be better to keep using __alloc_pages_node() because cpu_to_node()
always returns valid node id.
Thanks!
Gerry
>
> In the longterm, if we setup both zonelists correctly (no __GFP_THISNODE
> and with __GFP_THISNODE), then I'm not sure there's any reason to ever use
> cpu_to_mem() for alloc_pages().
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
WARNING: multiple messages have this Message-ID (diff)
From: Jiang Liu <jiang.liu@linux.intel.com>
To: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Mel Gorman <mgorman@suse.de>,
Mike Galbraith <umgwanakikbuti@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Tang Chen <tangchen@cn.fujitsu.com>, Tejun Heo <tj@kernel.org>,
Tony Luck <tony.luck@intel.com>,
linux-mm@kvack.org, linux-hotplug@vger.kernel.org,
linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [Patch V3 2/9] kernel/profile.c: Replace cpu_to_mem() with cpu_to_node()
Date: Fri, 9 Oct 2015 10:35:51 +0800 [thread overview]
Message-ID: <56172807.4090906@linux.intel.com> (raw)
In-Reply-To: <alpine.DEB.2.10.1508191657330.30666@chino.kir.corp.google.com>
On 2015/8/20 8:00, David Rientjes wrote:
> On Wed, 19 Aug 2015, Jiang Liu wrote:
>
>> On 2015/8/18 8:31, David Rientjes wrote:
>>> On Mon, 17 Aug 2015, Jiang Liu wrote:
>>>
>>>> Function profile_cpu_callback() allocates memory without specifying
>>>> __GFP_THISNODE flag, so replace cpu_to_mem() with cpu_to_node()
>>>> because cpu_to_mem() may cause suboptimal memory allocation if
>>>> there's no free memory on the node returned by cpu_to_mem().
>>>>
>>>
>>> Why is cpu_to_node() better with regard to free memory and NUMA locality?
>> Hi David,
>> Thanks for review. This is a special case pointed out by Tejun.
>> For the imagined topology, A<->B<->X<->C<->D, where A, B, C, D has
>> memory and X is memoryless.
>> Possible fallback lists are:
>> B: [ B, A, C, D]
>> X: [ B, C, A, D]
>> C: [ C, D, B, A]
>>
>> cpu_to_mem(X) will either return B or C. Let's assume it returns B.
>> Then we will use "B: [ B, A, C, D]" to allocate memory for X, which
>> is not the optimal fallback list for X. And cpu_to_node(X) returns
>> X, and "X: [ B, C, A, D]" is the optimal fallback list for X.
>
> Ok, that makes sense, but I would prefer that this
> alloc_pages_exact_node() change to alloc_pages_node() since, as you
> mention in your commit message, __GFP_THISNODE is not set.
Hi David,
Sorry for slow response due to personal reasons!
Function alloc_pages_exact_node() has been renamed as
__alloc_pages_node() by commit 96db800f5d73, and __alloc_pages_node()
is a slightly optimized version of alloc_pages_node() which doesn't
fallback to current node for nid == NUMA_NO_NODE case. So it would
be better to keep using __alloc_pages_node() because cpu_to_node()
always returns valid node id.
Thanks!
Gerry
>
> In the longterm, if we setup both zonelists correctly (no __GFP_THISNODE
> and with __GFP_THISNODE), then I'm not sure there's any reason to ever use
> cpu_to_mem() for alloc_pages().
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Jiang Liu <jiang.liu@linux.intel.com>
To: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Mel Gorman <mgorman@suse.de>,
Mike Galbraith <umgwanakikbuti@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Tang Chen <tangchen@cn.fujitsu.com>, Tejun Heo <tj@kernel.org>,
Tony Luck <tony.luck@intel.com>,
linux-mm@kvack.org, linux-hotplug@vger.kernel.org,
linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [Patch V3 2/9] kernel/profile.c: Replace cpu_to_mem() with cpu_to_node()
Date: Fri, 9 Oct 2015 10:35:51 +0800 [thread overview]
Message-ID: <56172807.4090906@linux.intel.com> (raw)
In-Reply-To: <alpine.DEB.2.10.1508191657330.30666@chino.kir.corp.google.com>
On 2015/8/20 8:00, David Rientjes wrote:
> On Wed, 19 Aug 2015, Jiang Liu wrote:
>
>> On 2015/8/18 8:31, David Rientjes wrote:
>>> On Mon, 17 Aug 2015, Jiang Liu wrote:
>>>
>>>> Function profile_cpu_callback() allocates memory without specifying
>>>> __GFP_THISNODE flag, so replace cpu_to_mem() with cpu_to_node()
>>>> because cpu_to_mem() may cause suboptimal memory allocation if
>>>> there's no free memory on the node returned by cpu_to_mem().
>>>>
>>>
>>> Why is cpu_to_node() better with regard to free memory and NUMA locality?
>> Hi David,
>> Thanks for review. This is a special case pointed out by Tejun.
>> For the imagined topology, A<->B<->X<->C<->D, where A, B, C, D has
>> memory and X is memoryless.
>> Possible fallback lists are:
>> B: [ B, A, C, D]
>> X: [ B, C, A, D]
>> C: [ C, D, B, A]
>>
>> cpu_to_mem(X) will either return B or C. Let's assume it returns B.
>> Then we will use "B: [ B, A, C, D]" to allocate memory for X, which
>> is not the optimal fallback list for X. And cpu_to_node(X) returns
>> X, and "X: [ B, C, A, D]" is the optimal fallback list for X.
>
> Ok, that makes sense, but I would prefer that this
> alloc_pages_exact_node() change to alloc_pages_node() since, as you
> mention in your commit message, __GFP_THISNODE is not set.
Hi David,
Sorry for slow response due to personal reasons!
Function alloc_pages_exact_node() has been renamed as
__alloc_pages_node() by commit 96db800f5d73, and __alloc_pages_node()
is a slightly optimized version of alloc_pages_node() which doesn't
fallback to current node for nid == NUMA_NO_NODE case. So it would
be better to keep using __alloc_pages_node() because cpu_to_node()
always returns valid node id.
Thanks!
Gerry
>
> In the longterm, if we setup both zonelists correctly (no __GFP_THISNODE
> and with __GFP_THISNODE), then I'm not sure there's any reason to ever use
> cpu_to_mem() for alloc_pages().
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
next prev parent reply other threads:[~2015-10-09 2:35 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-17 3:18 [Patch V3 0/9] Enable memoryless node support for x86 Jiang Liu
2015-08-17 3:18 ` Jiang Liu
2015-08-17 3:18 ` Jiang Liu
2015-08-17 3:18 ` [Patch V3 1/9] x86, NUMA, ACPI: Online node earlier when doing CPU hot-addition Jiang Liu
2015-08-17 3:18 ` Jiang Liu
2015-08-17 3:18 ` Jiang Liu
2015-08-17 3:18 ` [Patch V3 2/9] kernel/profile.c: Replace cpu_to_mem() with cpu_to_node() Jiang Liu
2015-08-17 3:18 ` Jiang Liu
2015-08-17 3:18 ` Jiang Liu
2015-08-18 0:31 ` David Rientjes
2015-08-18 0:31 ` David Rientjes
2015-08-18 0:31 ` David Rientjes
2015-08-19 7:18 ` Jiang Liu
2015-08-19 7:18 ` Jiang Liu
2015-08-19 7:18 ` Jiang Liu
2015-08-20 0:00 ` David Rientjes
2015-08-20 0:00 ` David Rientjes
2015-08-20 0:00 ` David Rientjes
2015-10-09 2:35 ` Jiang Liu [this message]
2015-10-09 2:35 ` Jiang Liu
2015-10-09 2:35 ` Jiang Liu
2015-08-17 3:19 ` [Patch V3 3/9] sgi-xp: Replace cpu_to_node() with cpu_to_mem() to support memoryless node Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-18 0:25 ` David Rientjes
2015-08-18 0:25 ` David Rientjes
2015-08-18 0:25 ` David Rientjes
2015-08-19 8:20 ` Jiang Liu
2015-08-19 8:20 ` Jiang Liu
2015-08-19 8:20 ` Jiang Liu
2015-08-20 0:02 ` David Rientjes
2015-08-20 0:02 ` David Rientjes
2015-08-20 0:02 ` David Rientjes
2015-08-20 6:36 ` Jiang Liu
2015-08-20 6:36 ` Jiang Liu
2015-08-20 6:36 ` Jiang Liu
2015-10-09 5:04 ` Jiang Liu
2015-10-09 5:04 ` Jiang Liu
2015-10-09 5:04 ` Jiang Liu
2015-08-19 11:52 ` Robin Holt
2015-08-19 11:52 ` Robin Holt
2015-08-19 11:52 ` Robin Holt
2015-08-19 12:45 ` Jiang Liu
2015-08-19 12:45 ` Jiang Liu
2015-08-19 12:45 ` Jiang Liu
2015-08-17 3:19 ` [Patch V3 4/9] openvswitch: " Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-18 0:14 ` Pravin Shelar
2015-08-18 0:14 ` Pravin Shelar
2015-08-18 0:14 ` Pravin Shelar
2015-08-17 3:19 ` [Intel-wired-lan] [Patch V3 5/9] i40e: Use numa_mem_id() to better " Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-18 0:35 ` [Intel-wired-lan] " David Rientjes
2015-08-18 0:35 ` David Rientjes
2015-08-18 0:35 ` David Rientjes
2015-08-18 0:35 ` David Rientjes
2015-08-19 17:04 ` [Intel-wired-lan] " Bowers, AndrewX
2015-08-19 22:38 ` Patil, Kiran
2015-08-19 22:38 ` Patil, Kiran
2015-08-19 22:38 ` Patil, Kiran
2015-08-20 0:18 ` David Rientjes
2015-08-20 0:18 ` David Rientjes
2015-08-20 0:18 ` David Rientjes
2015-08-20 0:18 ` David Rientjes
2015-08-20 0:18 ` David Rientjes
2015-10-08 20:20 ` Andrew Morton
2015-10-08 20:20 ` Andrew Morton
2015-10-08 20:20 ` Andrew Morton
2015-10-08 20:20 ` Andrew Morton
2015-10-08 20:20 ` Andrew Morton
2015-10-09 5:52 ` Jiang Liu
2015-10-09 5:52 ` Jiang Liu
2015-10-09 5:52 ` Jiang Liu
2015-10-09 5:52 ` Jiang Liu
2015-10-09 5:52 ` Jiang Liu
2015-10-09 9:08 ` Kamezawa Hiroyuki
2015-10-09 9:08 ` Kamezawa Hiroyuki
2015-10-09 9:08 ` Kamezawa Hiroyuki
2015-10-09 9:08 ` Kamezawa Hiroyuki
2015-10-09 9:08 ` Kamezawa Hiroyuki
2015-10-09 9:25 ` Jiang Liu
2015-10-09 9:25 ` Jiang Liu
2015-10-09 9:25 ` Jiang Liu
2015-10-09 9:25 ` Jiang Liu
2015-10-09 9:25 ` Jiang Liu
2015-08-17 3:19 ` [Intel-wired-lan] [Patch V3 6/9] i40evf: " Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 19:03 ` [Intel-wired-lan] " Patil, Kiran
2015-08-17 19:03 ` Patil, Kiran
2015-08-17 19:03 ` Patil, Kiran
2015-08-18 21:34 ` Jeff Kirsher
2015-08-18 21:34 ` Jeff Kirsher
2015-08-17 3:19 ` [Patch V3 7/9] x86, numa: Kill useless code to improve code readability Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` [Patch V3 8/9] mm: Update _mem_id_[] for every possible CPU when memory configuration changes Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` [Patch V3 9/9] mm, x86: Enable memoryless node support to better support CPU/memory hotplug Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-17 3:19 ` Jiang Liu
2015-08-18 6:11 ` Tang Chen
2015-08-18 6:11 ` Tang Chen
2015-08-18 6:11 ` Tang Chen
2015-08-18 6:11 ` Tang Chen
2015-08-18 6:59 ` Jiang Liu
2015-08-18 6:59 ` Jiang Liu
2015-08-18 11:28 ` Tang Chen
2015-08-18 11:28 ` Tang Chen
2015-08-18 11:28 ` Tang Chen
2015-08-18 11:28 ` Tang Chen
2015-08-18 7:31 ` Ingo Molnar
2015-08-18 7:31 ` Ingo Molnar
2015-08-18 7:31 ` Ingo Molnar
2015-08-18 7:31 ` Ingo Molnar
2015-08-17 21:35 ` [Patch V3 0/9] Enable memoryless node support for x86 Andrew Morton
2015-08-17 21:35 ` Andrew Morton
2015-08-17 21:35 ` Andrew Morton
2015-08-18 10:02 ` Tang Chen
2015-08-18 10:02 ` Tang Chen
2015-08-18 10:02 ` Tang Chen
2015-08-19 8:09 ` Jiang Liu
2015-08-19 8:09 ` Jiang Liu
2015-08-19 8:09 ` Jiang Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56172807.4090906@linux.intel.com \
--to=jiang.liu@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=linux-hotplug@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rientjes@google.com \
--cc=tangchen@cn.fujitsu.com \
--cc=tj@kernel.org \
--cc=tony.luck@intel.com \
--cc=umgwanakikbuti@gmail.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.