All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Aravamudan <nacc@us.ibm.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
	anton@samba.org, akpm@linux-foundation.org, linux-mm@kvack.org,
	Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [PATCH v2] Add populated_map to account for memoryless nodes
Date: Tue, 12 Jun 2007 13:00:12 -0700	[thread overview]
Message-ID: <20070612200012.GE3798@us.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0706121250430.7983@schroedinger.engr.sgi.com>

On 12.06.2007 [12:51:26 -0700], Christoph Lameter wrote:
> I thought more along these lines?
> 
> NUMA: introduce node_memory_map
> 
> It is necessary to know if nodes have memory since we have recently
> begun to add support for memoryless nodes. For that purpose we introduce
> a new bitmap called
> 
> node_memory_map
> 
> A node has its bit in node_memory_map set if it has memory. If a node
> has memory then it has at least one zone defined in its pgdat structure
> that is located in the pgdat itself.
> 
> The node_memory_map can then be used in various places to insure that we
> do the right thing when we encounter a memoryless node.
> 
> Signed-off-by: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
> 
> Index: linux-2.6.22-rc4-mm2/include/linux/nodemask.h
> ===================================================================
> --- linux-2.6.22-rc4-mm2.orig/include/linux/nodemask.h	2007-06-12 12:07:29.000000000 -0700
> +++ linux-2.6.22-rc4-mm2/include/linux/nodemask.h	2007-06-12 12:09:35.000000000 -0700
> @@ -64,12 +64,16 @@
>   *
>   * int node_online(node)		Is some node online?
>   * int node_possible(node)		Is some node possible?
> + * int node_memory(node)		Does a node have memory?
>   *
>   * int any_online_node(mask)		First online node in mask
>   *
>   * node_set_online(node)		set bit 'node' in node_online_map
>   * node_set_offline(node)		clear bit 'node' in node_online_map
>   *
> + * node_set_memory(node)		set bit 'node' in node_memory_map
> + * node_clear_memoryd(node)		clear bit 'node' in node_memory_map
> + *

These are terrible names :) Something more like node_set_has_memory(node)
and node_set_has_no_memory(node), maybe? [why be arbitrarily different
than node_set_{on,off}line?].

And there is a typo ;)

>   * for_each_node(node)			for-loop node over node_possible_map
>   * for_each_online_node(node)		for-loop node over node_online_map
>   *
> @@ -344,12 +348,14 @@ static inline void __nodes_remap(nodemas
> 
>  extern nodemask_t node_online_map;
>  extern nodemask_t node_possible_map;
> +extern nodemask_t node_memory_map;
> 
>  #if MAX_NUMNODES > 1
>  #define num_online_nodes()	nodes_weight(node_online_map)
>  #define num_possible_nodes()	nodes_weight(node_possible_map)
>  #define node_online(node)	node_isset((node), node_online_map)
>  #define node_possible(node)	node_isset((node), node_possible_map)
> +#define node_memory(node)	node_isset((node), node_memory_map)
>  #define first_online_node	first_node(node_online_map)
>  #define next_online_node(nid)	next_node((nid), node_online_map)
>  extern int nr_node_ids;
> @@ -358,6 +364,7 @@ extern int nr_node_ids;
>  #define num_possible_nodes()	1
>  #define node_online(node)	((node) == 0)
>  #define node_possible(node)	((node) == 0)
> +#define node_populated(node)	((node) == 0)
>  #define first_online_node	0
>  #define next_online_node(nid)	(MAX_NUMNODES)
>  #define nr_node_ids		1
> @@ -375,6 +382,9 @@ extern int nr_node_ids;
>  #define node_set_online(node)	   set_bit((node), node_online_map.bits)
>  #define node_set_offline(node)	   clear_bit((node), node_online_map.bits)
> 
> +#define node_set_memory(node)     set_bit((node), node_memory_map.bits)
> +#define node_clear_memory(node)   clear_bit((node), node_memory_map.bits)
> +
>  #define for_each_node(node)	   for_each_node_mask((node), node_possible_map)
>  #define for_each_online_node(node) for_each_node_mask((node), node_online_map)
> 
> Index: linux-2.6.22-rc4-mm2/mm/page_alloc.c
> ===================================================================
> --- linux-2.6.22-rc4-mm2.orig/mm/page_alloc.c	2007-06-12 12:07:29.000000000 -0700
> +++ linux-2.6.22-rc4-mm2/mm/page_alloc.c	2007-06-12 12:11:04.000000000 -0700
> @@ -54,6 +54,9 @@ nodemask_t node_online_map __read_mostly
>  EXPORT_SYMBOL(node_online_map);
>  nodemask_t node_possible_map __read_mostly = NODE_MASK_ALL;
>  EXPORT_SYMBOL(node_possible_map);
> +nodemask_t node_memory_map __read_mostly = NODE_MASK_NONE;
> +EXPORT_SYMBOL(node_memory_map);

SERIOUSLY!? After saying that node_populated_map should be NUMA-only
over and over, you made it global here :-P

>  unsigned long totalram_pages __read_mostly;
>  unsigned long totalreserve_pages __read_mostly;
>  long nr_swap_pages;
> @@ -2299,6 +2302,9 @@ static void build_zonelists(pg_data_t *p
>  		/* calculate node order -- i.e., DMA last! */
>  		build_zonelists_in_zone_order(pgdat, j);
>  	}
> +
> +	if (pgdat->node_present_pages)
> +		node_set_memory(local_node);
>  }

Other than the naming, looks sane.

Thanks,
Nish

-- 
Nishanth Aravamudan <nacc@us.ibm.com>
IBM Linux Technology Center

--
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>

  reply	other threads:[~2007-06-12 19:55 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-11 20:27 [PATCH] Add populated_map to account for memoryless nodes Nishanth Aravamudan, Lee Schermerhorn
2007-06-11 21:25 ` Christoph Lameter
2007-06-11 22:10   ` [PATCH v2] " Nishanth Aravamudan
2007-06-11 22:42     ` Christoph Lameter
2007-06-11 22:52       ` [PATCH v3] " Nishanth Aravamudan
2007-06-11 23:00         ` Christoph Lameter
2007-06-11 23:41           ` [PATCH v4] " Nishanth Aravamudan
2007-06-11 23:45             ` Christoph Lameter
2007-06-12  0:07               ` [PATCH] populated_map: fix !NUMA case, remove comment Nishanth Aravamudan
2007-06-12  0:41                 ` Christoph Lameter
2007-06-12  1:43                   ` Nishanth Aravamudan
2007-06-12  1:45                     ` Christoph Lameter
2007-06-12  1:52                       ` Nishanth Aravamudan
2007-06-12  2:39                       ` Nishanth Aravamudan
2007-06-12  2:02                   ` Nishanth Aravamudan
2007-06-12  2:20                     ` Christoph Lameter
2007-06-12  2:32                       ` Nishanth Aravamudan
2007-06-12  2:54                         ` Christoph Lameter
2007-06-12  3:20                           ` Nishanth Aravamudan
2007-06-12  3:21                             ` Christoph Lameter
2007-06-12  3:31                               ` Nishanth Aravamudan
2007-06-12 15:06                             ` Lee Schermerhorn
2007-06-12 17:28                               ` Nishanth Aravamudan
2007-06-12 18:43                                 ` Christoph Lameter
2007-06-12 18:48                                 ` Lee Schermerhorn
2007-06-12 18:51                                   ` Christoph Lameter
2007-06-12 19:44                                     ` Lee Schermerhorn
2007-06-12 19:48                                       ` Christoph Lameter
2007-06-12 19:58                                         ` Christoph Lameter
2007-06-12 20:01                                           ` Nishanth Aravamudan
2007-06-13 15:30                                             ` Lee Schermerhorn
2007-06-13 17:58                                               ` Nishanth Aravamudan
2007-06-13 18:21                                                 ` Lee Schermerhorn
2007-06-13 19:01                                                   ` Nishanth Aravamudan
2007-06-13 22:51                                                   ` Christoph Lameter
2007-06-14 15:50                                                     ` Lee Schermerhorn
2007-06-14 15:57                                                       ` Christoph Lameter
2007-06-14 16:54                                                         ` Lee Schermerhorn
2007-06-14 16:09                                                       ` Nishanth Aravamudan
2007-06-14 16:15                                                         ` Christoph Lameter
2007-06-14 17:07                                                           ` Lee Schermerhorn
2007-06-14 17:16                                                             ` Christoph Lameter
2007-06-14 18:04                                                               ` Lee Schermerhorn
2007-06-14 22:35                                                             ` Nishanth Aravamudan
2007-06-13 22:50                                                 ` Christoph Lameter
2007-06-13 23:09                                                   ` Nishanth Aravamudan
2007-06-13 23:12                                                     ` Christoph Lameter
2007-06-13 23:18                                                       ` Nishanth Aravamudan
2007-06-13 23:26                                                         ` Christoph Lameter
2007-06-13 23:56                                                           ` Nishanth Aravamudan
2007-06-14 14:23                                                   ` Lee Schermerhorn
2007-06-13 22:49                                               ` Christoph Lameter
2007-06-12 19:55                                       ` Nishanth Aravamudan
2007-06-12 18:41                               ` Christoph Lameter
2007-06-12 19:07                                 ` Lee Schermerhorn
2007-06-12 19:13                                   ` Christoph Lameter
2007-06-11 23:08         ` [PATCH][RFC] Fix INTERLEAVE with memoryless nodes Nishanth Aravamudan
2007-06-11 23:10           ` [PATCH v6][RFC] Fix hugetlb pool allocation with empty nodes Nishanth Aravamudan
2007-06-11 23:11             ` [PATCH][RFC] hugetlb: numafy several functions Nishanth Aravamudan
2007-06-11 23:13               ` [PATCH][RFC] hugetlb: add per-node nr_hugepages sysfs attribute Nishanth Aravamudan
2007-06-11 23:40                 ` Christoph Lameter
2007-06-11 23:42                 ` Christoph Lameter
2007-06-12  0:19                   ` Nishanth Aravamudan
2007-06-12  0:43                     ` Christoph Lameter
2007-06-12  2:19                   ` Nishanth Aravamudan
2007-06-12  2:22                     ` Christoph Lameter
2007-06-12  2:34                       ` Nishanth Aravamudan
2007-06-11 23:38               ` [PATCH][RFC] hugetlb: numafy several functions Christoph Lameter
2007-06-11 23:17             ` [PATCH v6][RFC] Fix hugetlb pool allocation with empty nodes Christoph Lameter
2007-06-12  0:15               ` Nishanth Aravamudan
2007-06-12  0:47                 ` Christoph Lameter
2007-06-12  2:12                   ` Nishanth Aravamudan
2007-06-12  2:21                     ` Christoph Lameter
2007-06-12  2:25                       ` Christoph Lameter
2007-06-12  2:34                         ` Nishanth Aravamudan
2007-06-12  2:55                           ` Christoph Lameter
2007-06-12  3:17                             ` Nishanth Aravamudan
2007-06-12  3:19                               ` Christoph Lameter
2007-06-12  3:30                                 ` Nishanth Aravamudan
2007-06-12  3:48                                   ` Christoph Lameter
2007-06-12  5:07                                     ` Nishanth Aravamudan
2007-06-12 18:47                                       ` Christoph Lameter
2007-06-12 17:43                                     ` Nishanth Aravamudan
2007-06-12 18:49                                       ` Christoph Lameter
2007-06-12  2:33                       ` Nishanth Aravamudan
2007-06-12  3:44                 ` William Lee Irwin III
2007-06-12  3:50                   ` Christoph Lameter
2007-06-12  3:53                     ` William Lee Irwin III
2007-06-12  3:53                       ` Christoph Lameter
2007-06-12  4:14                         ` William Lee Irwin III
2007-06-12  5:09                   ` Nishanth Aravamudan
2007-06-12  5:15                     ` William Lee Irwin III
2007-06-12 17:36                       ` Nishanth Aravamudan
2007-06-12 18:50                         ` Christoph Lameter
2007-06-12 17:45                       ` Nishanth Aravamudan
2007-06-12 19:13                         ` William Lee Irwin III
2007-06-13  0:04                           ` [PATCH v7][RFC] " Nishanth Aravamudan
2007-06-13 15:26                             ` [PATCH v3][RFC] hugetlb: numafy several functions Nishanth Aravamudan
2007-06-13 15:28                               ` [PATCH v3][RFC] hugetlb: add per-node nr_hugepages sysfs attribute Nishanth Aravamudan
2007-06-13 18:23                                 ` Lee Schermerhorn
2007-06-13 19:19                                   ` [PATCH v4][RFC] " Nishanth Aravamudan
2007-06-13 20:05                                     ` Lee Schermerhorn
2007-06-13 20:29                                       ` Nishanth Aravamudan
2007-06-13 21:02                                         ` Lee Schermerhorn
2007-07-23 19:23                                       ` Christoph Lameter
2007-07-23 20:14                                         ` Lee Schermerhorn
2007-06-13 21:04                             ` [PATCH v7][RFC] Fix hugetlb pool allocation with empty nodes Lee Schermerhorn
2007-06-13 21:50                               ` [PATCH v7][UPDATE][RFC] " Nishanth Aravamudan
2007-06-12 14:28               ` [PATCH v6][RFC] " Lee Schermerhorn
2007-06-11 23:15           ` [PATCH][RFC] Fix INTERLEAVE with memoryless nodes Christoph Lameter
2007-06-12  0:14             ` [PATCH v2][RFC] " Nishanth Aravamudan
2007-06-12  0:42               ` Christoph Lameter
2007-06-12  0:57               ` Andrew Morton
2007-06-12  1:12                 ` Christoph Lameter
2007-06-12  1:41                 ` Nishanth Aravamudan
2007-06-12  1:52                   ` Andrew Morton
2007-06-12  2:03                     ` Nishanth Aravamudan
2007-06-12 14:19       ` [PATCH v2] Add populated_map to account for " Lee Schermerhorn
2007-06-12 17:32         ` Nishanth Aravamudan
2007-06-12 18:45         ` Christoph Lameter
2007-06-12 19:17           ` Lee Schermerhorn
2007-06-12 19:22             ` Christoph Lameter
2007-06-12 19:49               ` Nishanth Aravamudan
2007-06-12 19:51                 ` Christoph Lameter
2007-06-12 20:00                   ` Nishanth Aravamudan [this message]
2007-06-12 20:03                     ` Christoph Lameter
2007-06-12 20:10                     ` Christoph Lameter
2007-06-12 19:52                 ` Christoph Lameter
2007-06-12 19:58                   ` Christoph Lameter
2007-06-12 20:00                   ` Nishanth Aravamudan
2007-06-12 20:06                     ` Christoph Lameter
2007-06-12 14:10   ` [PATCH] " Lee Schermerhorn
2007-06-12 17:35     ` Nishanth Aravamudan
2007-06-12 18:39       ` Christoph Lameter
2007-06-12 18:54         ` Lee Schermerhorn
2007-06-12 19:00           ` Christoph Lameter
2007-06-12  2:27 ` KAMEZAWA Hiroyuki
2007-06-12  2:46   ` Nishanth Aravamudan
2007-06-12  2:53   ` Christoph Lameter
2007-06-12  3:04     ` KAMEZAWA Hiroyuki

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=20070612200012.GE3798@us.ibm.com \
    --to=nacc@us.ibm.com \
    --cc=Lee.Schermerhorn@hp.com \
    --cc=akpm@linux-foundation.org \
    --cc=anton@samba.org \
    --cc=clameter@sgi.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-mm@kvack.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.