All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
To: David Rientjes <rientjes@google.com>
Cc: Michal Hocko <mhocko@suse.cz>,
	linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org,
	Anton Blanchard <anton@samba.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: ppc: RECLAIM_DISTANCE 10?
Date: Wed, 19 Feb 2014 08:33:45 -0800	[thread overview]
Message-ID: <20140219163345.GD27108@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140219162438.GB27108@linux.vnet.ibm.com>

On 19.02.2014 [08:24:38 -0800], Nishanth Aravamudan wrote:
> On 18.02.2014 [17:43:38 -0800], David Rientjes wrote:
> > On Tue, 18 Feb 2014, Nishanth Aravamudan wrote:
> > 
> > > How about the following?
> > > 
> > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > > index 5de4337..1a0eced 100644
> > > --- a/mm/page_alloc.c
> > > +++ b/mm/page_alloc.c
> > > @@ -1854,7 +1854,8 @@ static void __paginginit init_zone_allows_reclaim(int nid)
> > >         int i;
> > >  
> > >         for_each_online_node(i)
> > > -               if (node_distance(nid, i) <= RECLAIM_DISTANCE)
> > > +               if (node_distance(nid, i) <= RECLAIM_DISTANCE ||
> > > +                                       !NODE_DATA(i)->node_present_pages)
> > >                         node_set(i, NODE_DATA(nid)->reclaim_nodes);
> > >                 else
> > >                         zone_reclaim_mode = 1;
> > 
> >  [ I changed the above from NODE_DATA(nid) -> NODE_DATA(i) as you caught 
> >    so we're looking at the right code. ]
> > 
> > That can't be right, it would allow reclaiming from a memoryless node.  I 
> > think what you want is
> 
> Gah, you're right.
> 
> > 	for_each_online_node(i) {
> > 		if (!node_present_pages(i))
> > 			continue;
> > 		if (node_distance(nid, i) <= RECLAIM_DISTANCE) {
> > 			node_set(i, NODE_DATA(nid)->reclaim_nodes);
> > 			continue;
> > 		}
> > 		/* Always try to reclaim locally */
> > 		zone_reclaim_mode = 1;
> > 	}
> > 
> > but we really should be able to do for_each_node_state(i, N_MEMORY) here 
> > and memoryless nodes should already be excluded from that mask.
> 
> Yep, I found that afterwards, which simplifies the logic. I'll add this
> to my series :)

In looking at the code, I am wondering about the following:

init_zone_allows_reclaim() is called for each nid from
free_area_init_node(). Which means that calculate_node_totalpages for
other "later" nids and check_for_memory() [which sets up the N_MEMORY
nodemask] hasn't been called yet.

So, would it make sense to pull up the
                /* Any memory on that node */
                if (pgdat->node_present_pages)
                        node_set_state(nid, N_MEMORY);
                check_for_memory(pgdat, nid);
into free_area_init_node()?

Thanks,
Nish

WARNING: multiple messages have this Message-ID (diff)
From: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
To: David Rientjes <rientjes@google.com>
Cc: Michal Hocko <mhocko@suse.cz>,
	linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org,
	Anton Blanchard <anton@samba.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: ppc: RECLAIM_DISTANCE 10?
Date: Wed, 19 Feb 2014 08:33:45 -0800	[thread overview]
Message-ID: <20140219163345.GD27108@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140219162438.GB27108@linux.vnet.ibm.com>

On 19.02.2014 [08:24:38 -0800], Nishanth Aravamudan wrote:
> On 18.02.2014 [17:43:38 -0800], David Rientjes wrote:
> > On Tue, 18 Feb 2014, Nishanth Aravamudan wrote:
> > 
> > > How about the following?
> > > 
> > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > > index 5de4337..1a0eced 100644
> > > --- a/mm/page_alloc.c
> > > +++ b/mm/page_alloc.c
> > > @@ -1854,7 +1854,8 @@ static void __paginginit init_zone_allows_reclaim(int nid)
> > >         int i;
> > >  
> > >         for_each_online_node(i)
> > > -               if (node_distance(nid, i) <= RECLAIM_DISTANCE)
> > > +               if (node_distance(nid, i) <= RECLAIM_DISTANCE ||
> > > +                                       !NODE_DATA(i)->node_present_pages)
> > >                         node_set(i, NODE_DATA(nid)->reclaim_nodes);
> > >                 else
> > >                         zone_reclaim_mode = 1;
> > 
> >  [ I changed the above from NODE_DATA(nid) -> NODE_DATA(i) as you caught 
> >    so we're looking at the right code. ]
> > 
> > That can't be right, it would allow reclaiming from a memoryless node.  I 
> > think what you want is
> 
> Gah, you're right.
> 
> > 	for_each_online_node(i) {
> > 		if (!node_present_pages(i))
> > 			continue;
> > 		if (node_distance(nid, i) <= RECLAIM_DISTANCE) {
> > 			node_set(i, NODE_DATA(nid)->reclaim_nodes);
> > 			continue;
> > 		}
> > 		/* Always try to reclaim locally */
> > 		zone_reclaim_mode = 1;
> > 	}
> > 
> > but we really should be able to do for_each_node_state(i, N_MEMORY) here 
> > and memoryless nodes should already be excluded from that mask.
> 
> Yep, I found that afterwards, which simplifies the logic. I'll add this
> to my series :)

In looking at the code, I am wondering about the following:

init_zone_allows_reclaim() is called for each nid from
free_area_init_node(). Which means that calculate_node_totalpages for
other "later" nids and check_for_memory() [which sets up the N_MEMORY
nodemask] hasn't been called yet.

So, would it make sense to pull up the
                /* Any memory on that node */
                if (pgdat->node_present_pages)
                        node_set_state(nid, N_MEMORY);
                check_for_memory(pgdat, nid);
into free_area_init_node()?

Thanks,
Nish

--
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:[~2014-02-19 16:57 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-18  9:06 ppc: RECLAIM_DISTANCE 10? Michal Hocko
2014-02-18  9:06 ` Michal Hocko
2014-02-18  9:06 ` Michal Hocko
2014-02-18 22:27 ` David Rientjes
2014-02-18 22:27   ` David Rientjes
2014-02-18 22:27   ` David Rientjes
2014-02-19  8:16   ` Michal Hocko
2014-02-19  8:16     ` Michal Hocko
2014-02-19  8:16     ` Michal Hocko
2014-02-19  8:20     ` David Rientjes
2014-02-19  8:20       ` David Rientjes
2014-02-19  8:20       ` David Rientjes
2014-02-19  9:19       ` Michal Hocko
2014-02-19  9:19         ` Michal Hocko
2014-02-19  9:19         ` Michal Hocko
2014-02-19 21:45         ` David Rientjes
2014-02-19 21:45           ` David Rientjes
2014-02-19 21:45           ` David Rientjes
2014-02-18 23:34 ` Nishanth Aravamudan
2014-02-18 23:34   ` Nishanth Aravamudan
2014-02-18 23:34   ` Nishanth Aravamudan
2014-02-18 23:58   ` Nishanth Aravamudan
2014-02-18 23:58     ` Nishanth Aravamudan
2014-02-19  0:40     ` Nishanth Aravamudan
2014-02-19  0:40       ` Nishanth Aravamudan
2014-02-19  1:43     ` David Rientjes
2014-02-19  1:43       ` David Rientjes
2014-02-19  8:33       ` Michal Hocko
2014-02-19  8:33         ` Michal Hocko
2014-02-19  8:33         ` Michal Hocko
2014-02-19 16:24       ` Nishanth Aravamudan
2014-02-19 16:24         ` Nishanth Aravamudan
2014-02-19 16:33         ` Nishanth Aravamudan [this message]
2014-02-19 16:33           ` Nishanth Aravamudan
2014-02-20  9:55           ` Michal Hocko
2014-02-20  9:55             ` Michal Hocko
2014-02-20  9:55             ` Michal Hocko
2014-02-19  8:23   ` Michal Hocko
2014-02-19  8:23     ` Michal Hocko
2014-02-19  8:23     ` Michal Hocko
2014-02-19 16:26     ` Nishanth Aravamudan
2014-02-19 16:26       ` Nishanth Aravamudan
2014-02-19 16:26       ` Nishanth Aravamudan
2014-02-19 17:03     ` [RFC PATCH] mm: exclude memory less nodes from zone_reclaim Michal Hocko
2014-02-19 17:03       ` Michal Hocko
2014-02-19 17:16       ` Nishanth Aravamudan
2014-02-19 17:16         ` Nishanth Aravamudan
2014-02-19 17:32         ` Michal Hocko
2014-02-19 17:32           ` Michal Hocko
2014-02-19 17:49           ` Nishanth Aravamudan
2014-02-19 17:49             ` Nishanth Aravamudan
2014-02-19 19:40             ` Michal Hocko
2014-02-19 19:40               ` Michal Hocko
2014-02-19 17:53       ` Nishanth Aravamudan
2014-02-19 17:53         ` Nishanth Aravamudan
2014-02-19 21:56         ` David Rientjes
2014-02-19 21:56           ` David Rientjes
2014-02-19 23:05           ` Nishanth Aravamudan
2014-02-19 23:05             ` Nishanth Aravamudan
2014-02-20  9:50             ` Michal Hocko
2014-02-20  9:50               ` Michal Hocko

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=20140219163345.GD27108@linux.vnet.ibm.com \
    --to=nacc@linux.vnet.ibm.com \
    --cc=anton@samba.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mhocko@suse.cz \
    --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 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.