From: Tejun Heo <tj@kernel.org>
To: Lee Schermerhorn <lee.schermerhorn@hp.com>
Cc: linux-mm@kvack.org, linux-numa@vger.kernel.org,
Mel Gorman <mel@csn.ul.ie>,
Andi@domain.invalid, Kleen@domain.invalid, andi@firstfloor.org,
Christoph Lameter <cl@linux-foundation.org>,
Nick Piggin <npiggin@suse.de>,
David Rientjes <rientjes@google.com>,
eric.whitney@hp.com, Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [PATCH 4/8] numa: Introduce numa_mem_id()- effective local memory node id
Date: Sun, 18 Apr 2010 12:13:02 +0900 [thread overview]
Message-ID: <4BCA78BE.9000904@kernel.org> (raw)
In-Reply-To: <20100415173016.8801.34970.sendpatchset@localhost.localdomain>
On 04/16/2010 02:30 AM, Lee Schermerhorn wrote:
> +#ifdef CONFIG_HAVE_MEMORYLESS_NODES
> +
> +DECLARE_PER_CPU(int, numa_mem);
> +
> +#ifndef set_numa_mem
> +#define set_numa_mem(__node) percpu_write(numa_mem, __node)
> +#endif
> +
> +#else /* !CONFIG_HAVE_MEMORYLESS_NODES */
> +
> +#define numa_mem numa_node
Please make it a macro which takes arguments or an inline function.
Name substitutions like this can easily lead to pretty strange
problems when they end up substituting local variable names.
> +static inline void set_numa_mem(int node) {}
and maybe it's a good idea to make the above one emit warning if the
given node id doesn't match the cpu's numa node id? Also, in general,
setting numa id (cpu or mem) isn't a hot path and it would be better
to take both cpu and the node id arguments. ie,
set_numa_mem(unsigned int cpu, int node).
> +#endif /* [!]CONFIG_HAVE_MEMORYLESS_NODES */
> +
> +#ifndef numa_mem_id
> +/* Returns the number of the nearest Node with memory */
> +#define numa_mem_id() __this_cpu_read(numa_mem)
> +#endif
> +
> +#ifndef cpu_to_mem
> +#define cpu_to_mem(__cpu) per_cpu(numa_mem, (__cpu))
> +#endif
Isn't cpu_to_mem() too generic? Maybe it's a good idea to put 'numa'
or 'node' in the name?
> +#ifdef CONFIG_HAVE_MEMORYLESS_NODES
> + /*
> + * We now know the "local memory node" for each node--
> + * i.e., the node of the first zone in the generic zonelist.
> + * Set up numa_mem percpu variable for on-line cpus. During
> + * boot, only the boot cpu should be on-line; we'll init the
> + * secondary cpus' numa_mem as they come on-line. During
> + * node/memory hotplug, we'll fixup all on-line cpus.
> + */
> + if (cpu_online(cpu))
> + cpu_to_mem(cpu) = local_memory_node(cpu_to_node(cpu));
Please make cpu_to_node() evaluate to a rvalue and use set_numa_mem()
to set node. The above is a bit too easy to get wrong when archs
override the macro.
> +#ifdef CONFIG_HAVE_MEMORYLESS_NODES
> +int local_memory_node(int node_id);
> +#else
> +static inline int local_memory_node(int node_id) { return node_id; };
> +#endif
Hmmm... can there be local_memory_node() users when MEMORYLESS_NODES
is not enabled?
Thanks.
--
tejun
--
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>
next prev parent reply other threads:[~2010-04-18 8:32 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-15 17:29 [PATCH 0/8] Numa: Use Generic Per-cpu Variables for numa_*_id() Lee Schermerhorn
2010-04-15 17:29 ` [PATCH 1/8] numa: add generic percpu var numa_node_id() implementation Lee Schermerhorn
2010-04-16 16:43 ` Christoph Lameter
2010-04-16 20:33 ` Andrew Morton
2010-04-19 13:22 ` Lee Schermerhorn
2010-04-19 2:32 ` KAMEZAWA Hiroyuki
2010-04-15 17:30 ` [PATCH 2/8] numa: x86_64: use " Lee Schermerhorn
2010-04-16 16:46 ` Christoph Lameter
2010-04-18 2:56 ` Tejun Heo
2010-04-29 16:56 ` Lee Schermerhorn
2010-04-30 4:58 ` Tejun Heo
2010-05-02 1:49 ` Christoph Lameter
2010-04-15 17:30 ` [PATCH 3/8] numa: ia64: " Lee Schermerhorn
2010-04-19 2:51 ` KAMEZAWA Hiroyuki
2010-04-15 17:30 ` [PATCH 4/8] numa: Introduce numa_mem_id()- effective local memory node id Lee Schermerhorn
2010-04-18 3:13 ` Tejun Heo [this message]
2010-04-15 17:30 ` [PATCH 5/8] numa: ia64: support numa_mem_id() for memoryless nodes Lee Schermerhorn
2010-04-18 3:14 ` Tejun Heo
2010-04-15 17:30 ` [PATCH 6/8] numa: slab: use numa_mem_id() for slab local memory node Lee Schermerhorn
2010-05-12 18:49 ` Andrew Morton
2010-05-12 19:11 ` Lee Schermerhorn
2010-05-12 19:25 ` Valdis.Kletnieks
2010-05-12 20:03 ` Lee Schermerhorn
2010-04-15 17:30 ` [PATCH 7/8] numa: in-kernel profiling: use cpu_to_mem() for per cpu allocations Lee Schermerhorn
2010-04-15 17:30 ` [PATCH 8/8] numa: update Documentation/vm/numa, add memoryless node info Lee Schermerhorn
2010-04-15 18:00 ` Randy Dunlap
2010-04-16 0:50 ` KAMEZAWA Hiroyuki
2010-04-18 3:19 ` [PATCH 0/8] Numa: Use Generic Per-cpu Variables for numa_*_id() Tejun Heo
2010-04-19 13:29 ` Lee Schermerhorn
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=4BCA78BE.9000904@kernel.org \
--to=tj@kernel.org \
--cc=Andi@domain.invalid \
--cc=Kleen@domain.invalid \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=cl@linux-foundation.org \
--cc=eric.whitney@hp.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=lee.schermerhorn@hp.com \
--cc=linux-mm@kvack.org \
--cc=linux-numa@vger.kernel.org \
--cc=mel@csn.ul.ie \
--cc=npiggin@suse.de \
--cc=rientjes@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).