linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] mm: memblock: optimize memblock_find_in_range_node() to minimize the search work
@ 2013-01-04  9:24 Lin Feng
  2013-01-04 15:01 ` Tejun Heo
  0 siblings, 1 reply; 3+ messages in thread
From: Lin Feng @ 2013-01-04  9:24 UTC (permalink / raw)
  To: akpm, tj
  Cc: mingo, yinghai, liwanp, benh, tangchen, linux-mm, linux-kernel,
	Lin Feng

The memblock array is in ascending order and we traverse the memblock array in
reverse order so we can add some simple check to reduce the search work.

Tejun fix a underflow bug in 5d53cb27d8, but I think we could break there for
the same reason.

Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Lin Feng <linfeng@cn.fujitsu.com>
---
 mm/memblock.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/mm/memblock.c b/mm/memblock.c
index 6259055..a710557 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -111,11 +111,18 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start,
 	end = max(start, end);
 
 	for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) {
+		/*
+		 * exclude the regions out of the candidate range, since it's
+		 * likely to find a suitable range, we ignore the worst case.
+		 */
+		if (this_start >= end)
+			continue;
+
 		this_start = clamp(this_start, start, end);
 		this_end = clamp(this_end, start, end);
 
 		if (this_end < size)
-			continue;
+			break;
 
 		cand = round_down(this_end - size, align);
 		if (cand >= this_start)
-- 
1.7.11.7

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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH] mm: memblock: optimize memblock_find_in_range_node() to minimize the search work
  2013-01-04  9:24 [RFC PATCH] mm: memblock: optimize memblock_find_in_range_node() to minimize the search work Lin Feng
@ 2013-01-04 15:01 ` Tejun Heo
  2013-01-07  1:53   ` Lin Feng
  0 siblings, 1 reply; 3+ messages in thread
From: Tejun Heo @ 2013-01-04 15:01 UTC (permalink / raw)
  To: Lin Feng
  Cc: akpm, mingo, yinghai, liwanp, benh, tangchen, linux-mm,
	linux-kernel

On Fri, Jan 04, 2013 at 05:24:53PM +0800, Lin Feng wrote:
> The memblock array is in ascending order and we traverse the memblock array in
> reverse order so we can add some simple check to reduce the search work.
> 
> Tejun fix a underflow bug in 5d53cb27d8, but I think we could break there for
> the same reason.
> 
> Cc: Tejun Heo <tj@kernel.org>
> Signed-off-by: Lin Feng <linfeng@cn.fujitsu.com>
> ---
>  mm/memblock.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/memblock.c b/mm/memblock.c
> index 6259055..a710557 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -111,11 +111,18 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start,
>  	end = max(start, end);
>  
>  	for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) {
> +		/*
> +		 * exclude the regions out of the candidate range, since it's
> +		 * likely to find a suitable range, we ignore the worst case.
> +		 */
> +		if (this_start >= end)
> +			continue;
> +
>  		this_start = clamp(this_start, start, end);
>  		this_end = clamp(this_end, start, end);
>  
>  		if (this_end < size)
> -			continue;
> +			break;

I don't know.  This only saves looping when memblocks are below the
requested size, right?  I don't think it would matter in any way and
would prefer to keep the logic as simple as possible.

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>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH] mm: memblock: optimize memblock_find_in_range_node() to minimize the search work
  2013-01-04 15:01 ` Tejun Heo
@ 2013-01-07  1:53   ` Lin Feng
  0 siblings, 0 replies; 3+ messages in thread
From: Lin Feng @ 2013-01-07  1:53 UTC (permalink / raw)
  To: Tejun Heo
  Cc: akpm, mingo, yinghai, liwanp, benh, tangchen, linux-mm,
	linux-kernel



On 01/04/2013 11:01 PM, Tejun Heo wrote:
> On Fri, Jan 04, 2013 at 05:24:53PM +0800, Lin Feng wrote:
>> The memblock array is in ascending order and we traverse the memblock array in
>> reverse order so we can add some simple check to reduce the search work.
>>
>> Tejun fix a underflow bug in 5d53cb27d8, but I think we could break there for
>> the same reason.
>>
>> Cc: Tejun Heo <tj@kernel.org>
>> Signed-off-by: Lin Feng <linfeng@cn.fujitsu.com>
>> ---
>>  mm/memblock.c | 9 ++++++++-
>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/mm/memblock.c b/mm/memblock.c
>> index 6259055..a710557 100644
>> --- a/mm/memblock.c
>> +++ b/mm/memblock.c
>> @@ -111,11 +111,18 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start,
>>  	end = max(start, end);
>>  
>>  	for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) {
>> +		/*
>> +		 * exclude the regions out of the candidate range, since it's
>> +		 * likely to find a suitable range, we ignore the worst case.
>> +		 */
>> +		if (this_start >= end)
>> +			continue;
>> +
>>  		this_start = clamp(this_start, start, end);
>>  		this_end = clamp(this_end, start, end);
>>  
>>  		if (this_end < size)
>> -			continue;
>> +			break;
> 
> I don't know.  This only saves looping when memblocks are below the
> requested size, right?  I don't think it would matter in any way and
> would prefer to keep the logic as simple as possible.
Hi Tejun,

You're right, when we hit the 'if (this_end < size)' branch, it's nearly 
the end of the whole search loops. I just got an impression that is 
there any candidate range after we hit the if clause when I first read
this code, so... ;-)

thanks,
linfeng
> 
> Thanks.
> 

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-01-07  1:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-04  9:24 [RFC PATCH] mm: memblock: optimize memblock_find_in_range_node() to minimize the search work Lin Feng
2013-01-04 15:01 ` Tejun Heo
2013-01-07  1:53   ` Lin Feng

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