From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
clameter@sgi.com, akpm@linux-foundation.org, ak@suse.de,
jbarnes@virtuousgeek.org
Subject: Re: [PATCH] change zonelist order v5 [2/3] automatic configuration
Date: Tue, 08 May 2007 13:07:35 -0400 [thread overview]
Message-ID: <1178644056.5203.28.camel@localhost> (raw)
In-Reply-To: <20070508201819.99f499df.kamezawa.hiroyu@jp.fujitsu.com>
On Tue, 2007-05-08 at 20:18 +0900, KAMEZAWA Hiroyuki wrote:
> Add auto zone ordering configuration.
>
> This function will select ZONE_ORDER_NODE when
>
> There are only ZONE_DMA or ZONE_DMA32.
> || size of (ZONE_DMA/DMA32) > (System Total Memory)/2
> || Assume Node(A)
> Node (A) is enough big &&
> Node (A)'s ZONE_DMA/DMA32 occupies 60% of Node(A)'s memory.
> (In this case, ZONE_ORDER_ZONE may not offer enough locality...)
>
> otherwise, ZONE_ORDER_ZONE is selected.
>
> Maybe there is no best and simple way to configure zone order. I wrote this base on
> my experience and discussion on the list.
>
> Anyway, a user can specifiy zone order from boot option/sysctl.
>
> Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
Acked-by: Lee Schermerhorn <lee.schermerhorn@hp.com>
> ---
> mm/page_alloc.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 49 insertions(+), 2 deletions(-)
>
> Index: linux-2.6.21-mm1/mm/page_alloc.c
> ===================================================================
> --- linux-2.6.21-mm1.orig/mm/page_alloc.c
> +++ linux-2.6.21-mm1/mm/page_alloc.c
> @@ -2248,8 +2248,55 @@ static void build_zonelists_in_zone_orde
>
> static int default_zonelist_order(void)
> {
> - /* dummy, just select node order. */
> - return ZONELIST_ORDER_NODE;
> + int nid, zone_type;
> + unsigned long low_kmem_size,total_size;
> + struct zone *z;
> + int average_size;
> + /*
> + * ZONE_DMA and ZONE_DMA32 can be very small area in the sytem.
> + * If they are really small and used heavily, the system can fall
> + * into OOM very easily.
> + * This function detect ZONE_DMA/DMA32 size and confgigures zone order.
> + */
> + /* Is there ZONE_NORMAL ? (ex. ppc has only DMA zone..) */
> + low_kmem_size = 0;
> + total_size = 0;
> + for_each_online_node(nid) {
> + for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) {
> + z = &NODE_DATA(nid)->node_zones[zone_type];
> + if (populated_zone(z)) {
> + if (zone_type < ZONE_NORMAL)
> + low_kmem_size += z->present_pages;
> + total_size += z->present_pages;
> + }
> + }
> + }
> + if (!low_kmem_size || /* there are no DMA area. */
> + low_kmem_size > total_size/2) /* DMA/DMA32 is big. */
> + return ZONELIST_ORDER_NODE;
> + /*
> + * look into each node's config.
> + * If there is a node whose DMA/DMA32 memory is very big area on
> + * local memory, NODE_ORDER may be suitable.
> + */
> + average_size = total_size / (num_online_nodes() + 1);
> + for_each_online_node(nid) {
> + low_kmem_size = 0;
> + total_size = 0;
> + for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) {
> + z = &NODE_DATA(nid)->node_zones[zone_type];
> + if (populated_zone(z)) {
> + if (zone_type < ZONE_NORMAL)
> + low_kmem_size += z->present_pages;
> + total_size += z->present_pages;
> + }
> + }
> + if (low_kmem_size &&
> + total_size > average_size && /* ignore small node */
> + low_kmem_size > total_size * 70/100)
> + return ZONELIST_ORDER_NODE;
> + }
> + return ZONELIST_ORDER_ZONE;
> }
>
>
>
> --
> 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: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
clameter@sgi.com, akpm@linux-foundation.org, ak@suse.de,
jbarnes@virtuousgeek.org
Subject: Re: [PATCH] change zonelist order v5 [2/3] automatic configuration
Date: Tue, 08 May 2007 13:07:35 -0400 [thread overview]
Message-ID: <1178644056.5203.28.camel@localhost> (raw)
In-Reply-To: <20070508201819.99f499df.kamezawa.hiroyu@jp.fujitsu.com>
On Tue, 2007-05-08 at 20:18 +0900, KAMEZAWA Hiroyuki wrote:
> Add auto zone ordering configuration.
>
> This function will select ZONE_ORDER_NODE when
>
> There are only ZONE_DMA or ZONE_DMA32.
> || size of (ZONE_DMA/DMA32) > (System Total Memory)/2
> || Assume Node(A)
> Node (A) is enough big &&
> Node (A)'s ZONE_DMA/DMA32 occupies 60% of Node(A)'s memory.
> (In this case, ZONE_ORDER_ZONE may not offer enough locality...)
>
> otherwise, ZONE_ORDER_ZONE is selected.
>
> Maybe there is no best and simple way to configure zone order. I wrote this base on
> my experience and discussion on the list.
>
> Anyway, a user can specifiy zone order from boot option/sysctl.
>
> Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
Acked-by: Lee Schermerhorn <lee.schermerhorn@hp.com>
> ---
> mm/page_alloc.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 49 insertions(+), 2 deletions(-)
>
> Index: linux-2.6.21-mm1/mm/page_alloc.c
> ===================================================================
> --- linux-2.6.21-mm1.orig/mm/page_alloc.c
> +++ linux-2.6.21-mm1/mm/page_alloc.c
> @@ -2248,8 +2248,55 @@ static void build_zonelists_in_zone_orde
>
> static int default_zonelist_order(void)
> {
> - /* dummy, just select node order. */
> - return ZONELIST_ORDER_NODE;
> + int nid, zone_type;
> + unsigned long low_kmem_size,total_size;
> + struct zone *z;
> + int average_size;
> + /*
> + * ZONE_DMA and ZONE_DMA32 can be very small area in the sytem.
> + * If they are really small and used heavily, the system can fall
> + * into OOM very easily.
> + * This function detect ZONE_DMA/DMA32 size and confgigures zone order.
> + */
> + /* Is there ZONE_NORMAL ? (ex. ppc has only DMA zone..) */
> + low_kmem_size = 0;
> + total_size = 0;
> + for_each_online_node(nid) {
> + for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) {
> + z = &NODE_DATA(nid)->node_zones[zone_type];
> + if (populated_zone(z)) {
> + if (zone_type < ZONE_NORMAL)
> + low_kmem_size += z->present_pages;
> + total_size += z->present_pages;
> + }
> + }
> + }
> + if (!low_kmem_size || /* there are no DMA area. */
> + low_kmem_size > total_size/2) /* DMA/DMA32 is big. */
> + return ZONELIST_ORDER_NODE;
> + /*
> + * look into each node's config.
> + * If there is a node whose DMA/DMA32 memory is very big area on
> + * local memory, NODE_ORDER may be suitable.
> + */
> + average_size = total_size / (num_online_nodes() + 1);
> + for_each_online_node(nid) {
> + low_kmem_size = 0;
> + total_size = 0;
> + for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) {
> + z = &NODE_DATA(nid)->node_zones[zone_type];
> + if (populated_zone(z)) {
> + if (zone_type < ZONE_NORMAL)
> + low_kmem_size += z->present_pages;
> + total_size += z->present_pages;
> + }
> + }
> + if (low_kmem_size &&
> + total_size > average_size && /* ignore small node */
> + low_kmem_size > total_size * 70/100)
> + return ZONELIST_ORDER_NODE;
> + }
> + return ZONELIST_ORDER_ZONE;
> }
>
>
>
> --
> 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>
--
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:[~2007-05-08 17:07 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-08 11:14 [PATCH] change zonelist order v5 [0/3] KAMEZAWA Hiroyuki
2007-05-08 11:14 ` KAMEZAWA Hiroyuki
2007-05-08 11:16 ` [PATCH] change zonelist order v5 [1/3] implements zonelist order selection KAMEZAWA Hiroyuki
2007-05-08 11:16 ` KAMEZAWA Hiroyuki
2007-05-08 17:06 ` Lee Schermerhorn
2007-05-08 17:06 ` Lee Schermerhorn
2007-05-08 17:22 ` Christoph Lameter
2007-05-08 17:22 ` Christoph Lameter
2007-05-08 17:33 ` Lee Schermerhorn
2007-05-08 17:33 ` Lee Schermerhorn
2007-05-08 18:05 ` Christoph Lameter
2007-05-08 18:05 ` Christoph Lameter
2007-05-08 20:37 ` Lee Schermerhorn
2007-05-08 20:37 ` Lee Schermerhorn
2007-05-09 0:29 ` KAMEZAWA Hiroyuki
2007-05-09 0:29 ` KAMEZAWA Hiroyuki
2007-05-09 0:58 ` Andrew Morton
2007-05-09 0:58 ` Andrew Morton
2007-05-09 1:07 ` Christoph Lameter
2007-05-09 1:07 ` Christoph Lameter
2007-05-09 1:20 ` KAMEZAWA Hiroyuki
2007-05-09 1:20 ` KAMEZAWA Hiroyuki
2007-05-09 13:55 ` Lee Schermerhorn
2007-05-09 13:55 ` Lee Schermerhorn
2007-05-09 4:12 ` KAMEZAWA Hiroyuki
2007-05-09 4:12 ` KAMEZAWA Hiroyuki
2007-05-09 8:53 ` Andy Whitcroft
2007-05-09 8:53 ` Andy Whitcroft
2007-05-09 9:04 ` KAMEZAWA Hiroyuki
2007-05-09 9:04 ` KAMEZAWA Hiroyuki
2007-05-08 11:18 ` [PATCH] change zonelist order v5 [2/3] automatic configuration KAMEZAWA Hiroyuki
2007-05-08 11:18 ` KAMEZAWA Hiroyuki
2007-05-08 17:07 ` Lee Schermerhorn [this message]
2007-05-08 17:07 ` Lee Schermerhorn
2007-05-08 11:19 ` [PATCH] change zonelist order v5 [3/3] documentation KAMEZAWA Hiroyuki
2007-05-08 11:19 ` KAMEZAWA Hiroyuki
2007-05-08 17:08 ` Lee Schermerhorn
2007-05-08 17:08 ` Lee Schermerhorn
2007-05-09 0:23 ` KAMEZAWA Hiroyuki
2007-05-09 0:23 ` KAMEZAWA Hiroyuki
2007-05-08 12:04 ` [PATCH] change zonelist order v5 [4/3] compile fix KAMEZAWA Hiroyuki
2007-05-08 12:04 ` KAMEZAWA Hiroyuki
2007-05-08 16:14 ` [PATCH] change zonelist order v5 [0/3] Christoph Lameter
2007-05-08 16:14 ` Christoph Lameter
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=1178644056.5203.28.camel@localhost \
--to=lee.schermerhorn@hp.com \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=jbarnes@virtuousgeek.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--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.