linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Wei Yang <richard.weiyang@gmail.com>
To: Michal Hocko <mhocko@kernel.org>
Cc: Wei Yang <richard.weiyang@gmail.com>,
	akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH] mm/page_alloc: break on the first hit of mem range
Date: Wed, 28 Mar 2018 08:39:36 +0800	[thread overview]
Message-ID: <20180328003936.GB91956@WeideMacBook-Pro.local> (raw)
In-Reply-To: <20180327105821.GF5652@dhcp22.suse.cz>

On Tue, Mar 27, 2018 at 12:58:21PM +0200, Michal Hocko wrote:
>On Tue 27-03-18 11:57:07, Wei Yang wrote:
>> find_min_pfn_for_node() iterate on pfn range to find the minimum pfn for a
>> node. The memblock_region in memblock_type are already ordered, which means
>> the first hit in iteration is the minimum pfn.
>
>I haven't looked at the code yet but the changelog should contain the
>motivation why it exists. It seems like this is an optimization. If so,
>what is the impact?
>

Yep, this is a trivial optimization on searching the minimal pfn on a special
node. It would be better for audience to understand if I put some words in
change log.

The impact of this patch is it would accelerate the searching process when
there are many memory ranges in memblock.

For example, in the case https://lkml.org/lkml/2018/3/25/291, there are around
30 memory ranges on node 0. The original code need to iterate all those ranges
to find the minimal pfn, while after optimization it just need once.

The more memory ranges there are, the more impact this patch has.

>> This patch returns the fist hit instead of iterating the whole regions.
>> 
>> Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
>> ---
>>  mm/page_alloc.c | 10 +++++-----
>>  1 file changed, 5 insertions(+), 5 deletions(-)
>> 
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index 635d7dd29d7f..a65de1ec4b91 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -6365,14 +6365,14 @@ unsigned long __init node_map_pfn_alignment(void)
>>  /* Find the lowest pfn for a node */
>>  static unsigned long __init find_min_pfn_for_node(int nid)
>>  {
>> -	unsigned long min_pfn = ULONG_MAX;
>> -	unsigned long start_pfn;
>> +	unsigned long min_pfn;
>>  	int i;
>>  
>> -	for_each_mem_pfn_range(i, nid, &start_pfn, NULL, NULL)
>> -		min_pfn = min(min_pfn, start_pfn);
>> +	for_each_mem_pfn_range(i, nid, &min_pfn, NULL, NULL) {
>> +		break;
>> +	}
>>  
>> -	if (min_pfn == ULONG_MAX) {
>> +	if (i == -1) {
>>  		pr_warn("Could not find start_pfn for node %d\n", nid);
>>  		return 0;
>>  	}
>> -- 
>> 2.15.1
>> 
>
>-- 
>Michal Hocko
>SUSE Labs

-- 
Wei Yang
Help you, Help me

  reply	other threads:[~2018-03-28  0:39 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-27  3:57 Wei Yang
2018-03-27 10:58 ` Michal Hocko
2018-03-28  0:39   ` Wei Yang [this message]
2018-03-28  7:02     ` Michal Hocko
2018-03-28 13:17       ` Wei Yang
2018-03-27 22:47 ` Andrew Morton
2018-03-28  0:51   ` Wei Yang
2018-03-28  1:37     ` Andrew Morton
2018-03-28  3:44       ` Wei Yang
2018-03-28  3:47       ` [PATCH] mm/page_alloc: optimize find_min_pfn_for_node() by geting the minimal pfn directly Wei Yang
2018-03-28 11:58         ` Michal Hocko
2018-03-28 13:34           ` Wei Yang
2018-03-28 14:02             ` 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=20180328003936.GB91956@WeideMacBook-Pro.local \
    --to=richard.weiyang@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=tj@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox