linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Memory hot added,The memory can not been added to movable zone
@ 2015-08-19  8:18 Changsheng Liu
  2015-08-19 23:50 ` Andrew Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Changsheng Liu @ 2015-08-19  8:18 UTC (permalink / raw)
  To: akpm, isimatu.yasuaki, vbabka
  Cc: linux-mm, linux-kernel, yanxiaofeng, liuchangsheng, Changsheng Liu

From: Changsheng Liu <liuchangcheng@inspur.com>

When memory hot added, the function should_add_memory_movable
always return 0,because the movable zone is empty,
so the memory that hot added will add to normal zone even if
we want to remove the memory.
So we change the function should_add_memory_movable,if the user
config CONFIG_MOVABLE_NODE it will return 1 when
movable zone is empty

Signed-off-by: Changsheng Liu <liuchangcheng@inspur.com>
---
 mm/memory_hotplug.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 26fbba7..2b0aec4 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
 	pg_data_t *pgdat = NODE_DATA(nid);
 	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
 
-	if (zone_is_empty(movable_zone))
+	if (zone_is_empty(movable_zone)) {
+	#ifdef CONFIG_MOVABLE_NODE
+		return 1;
+	#else
 		return 0;
-
+	#endif
+	}
 	if (movable_zone->zone_start_pfn <= start_pfn)
 		return 1;
 
-- 
1.7.1


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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-19  8:18 [PATCH] Memory hot added,The memory can not been added to movable zone Changsheng Liu
@ 2015-08-19 23:50 ` Andrew Morton
  2015-08-20  5:59   ` Changsheng Liu
       [not found]   ` <55D57071.1080901@inspur.com>
  0 siblings, 2 replies; 9+ messages in thread
From: Andrew Morton @ 2015-08-19 23:50 UTC (permalink / raw)
  To: Changsheng Liu
  Cc: isimatu.yasuaki, vbabka, linux-mm, linux-kernel, yanxiaofeng,
	Changsheng Liu

On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu <liuchangsheng@inspur.com> wrote:

> From: Changsheng Liu <liuchangcheng@inspur.com>
> 
> When memory hot added, the function should_add_memory_movable
> always return 0,because the movable zone is empty,
> so the memory that hot added will add to normal zone even if
> we want to remove the memory.
> So we change the function should_add_memory_movable,if the user
> config CONFIG_MOVABLE_NODE it will return 1 when
> movable zone is empty

I cleaned this up a bit:

: Subject: mm: memory hot-add: memory can not been added to movable zone
: 
: When memory is hot added, should_add_memory_movable() always returns 0
: because the movable zone is empty, so the memory that was hot added will
: add to the normal zone even if we want to remove the memory.
: 
: So we change should_add_memory_movable(): if the user config
: CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.

But I don't understand the "even if we want to remove the memory". 
This is hot-add, not hot-remove.  What do you mean here?

> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
>  	pg_data_t *pgdat = NODE_DATA(nid);
>  	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>  
> -	if (zone_is_empty(movable_zone))
> +	if (zone_is_empty(movable_zone)) {
> +	#ifdef CONFIG_MOVABLE_NODE
> +		return 1;
> +	#else
>  		return 0;
> -
> +	#endif
> +	}
>  	if (movable_zone->zone_start_pfn <= start_pfn)
>  		return 1;

Cleaner:

--- a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
+++ a/mm/memory_hotplug.c
@@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
 	pg_data_t *pgdat = NODE_DATA(nid);
 	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
 
-	if (zone_is_empty(movable_zone)) {
-	#ifdef CONFIG_MOVABLE_NODE
-		return 1;
-	#else
-		return 0;
-	#endif
-	}
+	if (zone_is_empty(movable_zone))
+		return IS_ENABLED(CONFIG_MOVABLE_NODE);
+
 	if (movable_zone->zone_start_pfn <= start_pfn)
 		return 1;
 
_


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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-19 23:50 ` Andrew Morton
@ 2015-08-20  5:59   ` Changsheng Liu
       [not found]   ` <55D57071.1080901@inspur.com>
  1 sibling, 0 replies; 9+ messages in thread
From: Changsheng Liu @ 2015-08-20  5:59 UTC (permalink / raw)
  To: liuchangsheng; +Cc: linux-mm, linux-kernel, yanxiaofeng, Changsheng Liu

Hi Andrew Morton:
First, thanks very much for your review, I will update codes according to  your suggestion
     After the system startup, we hot added one memory. After some time 
we wanted to hot remove the memroy that was hot added,
     but we could not offline some memory blocks successfully because 
the memory was added to normal zone defaultly and the value of the file 
     named removable under some memory blocks is 0.
     we checked the value of the file under some memory blocks as follows:
     "cat /sys/devices/system/memory/ memory***/removable"
     When memory being hot added we let the memory be added to movable 
zone,
     so we will be able to hot remove the memory that have been hot added

On Wed, 20 Aug 2015 7:50, Andrew Morton wrote:

> On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu <liuchangsheng@inspur.com> wrote:
>
>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>
>> When memory hot added, the function should_add_memory_movable
>> always return 0,because the movable zone is empty,
>> so the memory that hot added will add to normal zone even if
>> we want to remove the memory.
>> So we change the function should_add_memory_movable,if the user
>> config CONFIG_MOVABLE_NODE it will return 1 when
>> movable zone is empty
> I cleaned this up a bit:
>
> : Subject: mm: memory hot-add: memory can not been added to movable zone
> :
> : When memory is hot added, should_add_memory_movable() always returns 0
> : because the movable zone is empty, so the memory that was hot added will
> : add to the normal zone even if we want to remove the memory.
> :
> : So we change should_add_memory_movable(): if the user config
> : CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.
>
> But I don't understand the "even if we want to remove the memory".
> This is hot-add, not hot-remove.  What do you mean here?
>
>> --- a/mm/memory_hotplug.c
>> +++ b/mm/memory_hotplug.c
>> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
>>   	pg_data_t *pgdat = NODE_DATA(nid);
>>   	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>   
>> -	if (zone_is_empty(movable_zone))
>> +	if (zone_is_empty(movable_zone)) {
>> +	#ifdef CONFIG_MOVABLE_NODE
>> +		return 1;
>> +	#else
>>   		return 0;
>> -
>> +	#endif
>> +	}
>>   	if (movable_zone->zone_start_pfn <= start_pfn)
>>   		return 1;
> Cleaner:
>
> --- a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
> +++ a/mm/memory_hotplug.c
> @@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
>   	pg_data_t *pgdat = NODE_DATA(nid);
>   	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>   
> -	if (zone_is_empty(movable_zone)) {
> -	#ifdef CONFIG_MOVABLE_NODE
> -		return 1;
> -	#else
> -		return 0;
> -	#endif
> -	}
> +	if (zone_is_empty(movable_zone))
> +		return IS_ENABLED(CONFIG_MOVABLE_NODE);
> +
>   	if (movable_zone->zone_start_pfn <= start_pfn)
>   		return 1;
>   
> _
>
> .
>


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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
       [not found]   ` <55D57071.1080901@inspur.com>
@ 2015-08-24 19:15     ` Yasuaki Ishimatsu
  2015-08-25 10:25       ` Changsheng Liu
  0 siblings, 1 reply; 9+ messages in thread
From: Yasuaki Ishimatsu @ 2015-08-24 19:15 UTC (permalink / raw)
  To: Changsheng Liu
  Cc: Andrew Morton, isimatu.yasuaki, vbabka, linux-mm, linux-kernel,
	yanxiaofeng, Changsheng Liu

Hi 
On Thu, 20 Aug 2015 14:15:13 +0800
Changsheng Liu <liuchangsheng@inspur.com> wrote:

> Hi Andrew Morton:
> First, thanks very much for your review, I will update codes according 
> to  your suggestio
> 
> 在 2015/8/20 7:50, Andrew Morton 写道:
> > On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu <liuchangsheng@inspur.com> wrote:
> >
> >> From: Changsheng Liu <liuchangcheng@inspur.com>
> >>
> >> When memory hot added, the function should_add_memory_movable
> >> always return 0,because the movable zone is empty,
> >> so the memory that hot added will add to normal zone even if
> >> we want to remove the memory.
> >> So we change the function should_add_memory_movable,if the user
> >> config CONFIG_MOVABLE_NODE it will return 1 when
> >> movable zone is empty
> > I cleaned this up a bit:
> >
> > : Subject: mm: memory hot-add: memory can not been added to movable zone
> > :
> > : When memory is hot added, should_add_memory_movable() always returns 0
> > : because the movable zone is empty, so the memory that was hot added will
> > : add to the normal zone even if we want to remove the memory.
> > :
> > : So we change should_add_memory_movable(): if the user config
> > : CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.
> >
> > But I don't understand the "even if we want to remove the memory".
> > This is hot-add, not hot-remove.  What do you mean here?
>      After the system startup, we hot added one memory. After some time 
> we wanted to hot remove the memroy that was hot added,
>      but we could not offline some memory blocks successfully because 
> the memory was added to normal zone defaultly and the value of the file 
>      named removable under some memory blocks is 0.

For this, we prepared online_movable. When memory is onlined by online_movable,
the memory move from ZONE_NORMAL to ZONE_MOVABLE.

Ex.
# echo online_movable > /sys/devices/system/memory/memoryXXX/state

Thanks,
Yasuaki Ishimatsu

>      we checked the value of the file under some memory blocks as follows:
>      "cat /sys/devices/system/memory/ memory***/removable"
>      When memory being hot added we let the memory be added to movable 
> zone,
>      so we will be able to hot remove the memory that have been hot added
> >> --- a/mm/memory_hotplug.c
> >> +++ b/mm/memory_hotplug.c
> >> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
> >>   	pg_data_t *pgdat = NODE_DATA(nid);
> >>   	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
> >>   
> >> -	if (zone_is_empty(movable_zone))
> >> +	if (zone_is_empty(movable_zone)) {
> >> +	#ifdef CONFIG_MOVABLE_NODE
> >> +		return 1;
> >> +	#else
> >>   		return 0;
> >> -
> >> +	#endif
> >> +	}
> >>   	if (movable_zone->zone_start_pfn <= start_pfn)
> >>   		return 1;
> > Cleaner:
> >
> > --- a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
> > +++ a/mm/memory_hotplug.c
> > @@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
> >   	pg_data_t *pgdat = NODE_DATA(nid);
> >   	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
> >   
> > -	if (zone_is_empty(movable_zone)) {
> > -	#ifdef CONFIG_MOVABLE_NODE
> > -		return 1;
> > -	#else
> > -		return 0;
> > -	#endif
> > -	}
> > +	if (zone_is_empty(movable_zone))
> > +		return IS_ENABLED(CONFIG_MOVABLE_NODE);
> > +
> >   	if (movable_zone->zone_start_pfn <= start_pfn)
> >   		return 1;
> >   
> > _
> >
> > .
> >
> 

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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-24 19:15     ` Yasuaki Ishimatsu
@ 2015-08-25 10:25       ` Changsheng Liu
  2015-08-25 11:13         ` Vlastimil Babka
  0 siblings, 1 reply; 9+ messages in thread
From: Changsheng Liu @ 2015-08-25 10:25 UTC (permalink / raw)
  To: Yasuaki Ishimatsu
  Cc: Andrew Morton, isimatu.yasuaki, vbabka, linux-mm, linux-kernel,
	yanxiaofeng, Changsheng Liu

Thanks very much for your review, I can move the memory from normal zone 
to movable zone succesfully.
And thank you for let me understand the memory mechanism better.
在 2015/8/25 3:15, Yasuaki Ishimatsu 写道:
> Hi
> On Thu, 20 Aug 2015 14:15:13 +0800
> Changsheng Liu <liuchangsheng@inspur.com> wrote:
>
>> Hi Andrew Morton:
>> First, thanks very much for your review, I will update codes according
>> to  your suggestio
>>
>> 在 2015/8/20 7:50, Andrew Morton 写道:
>>> On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu <liuchangsheng@inspur.com> wrote:
>>>
>>>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>>>
>>>> When memory hot added, the function should_add_memory_movable
>>>> always return 0,because the movable zone is empty,
>>>> so the memory that hot added will add to normal zone even if
>>>> we want to remove the memory.
>>>> So we change the function should_add_memory_movable,if the user
>>>> config CONFIG_MOVABLE_NODE it will return 1 when
>>>> movable zone is empty
>>> I cleaned this up a bit:
>>>
>>> : Subject: mm: memory hot-add: memory can not been added to movable zone
>>> :
>>> : When memory is hot added, should_add_memory_movable() always returns 0
>>> : because the movable zone is empty, so the memory that was hot added will
>>> : add to the normal zone even if we want to remove the memory.
>>> :
>>> : So we change should_add_memory_movable(): if the user config
>>> : CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.
>>>
>>> But I don't understand the "even if we want to remove the memory".
>>> This is hot-add, not hot-remove.  What do you mean here?
>>       After the system startup, we hot added one memory. After some time
>> we wanted to hot remove the memroy that was hot added,
>>       but we could not offline some memory blocks successfully because
>> the memory was added to normal zone defaultly and the value of the file
>>       named removable under some memory blocks is 0.
> For this, we prepared online_movable. When memory is onlined by online_movable,
> the memory move from ZONE_NORMAL to ZONE_MOVABLE.
>
> Ex.
> # echo online_movable > /sys/devices/system/memory/memoryXXX/state
>
> Thanks,
> Yasuaki Ishimatsu
>
>>       we checked the value of the file under some memory blocks as follows:
>>       "cat /sys/devices/system/memory/ memory***/removable"
>>       When memory being hot added we let the memory be added to movable
>> zone,
>>       so we will be able to hot remove the memory that have been hot added
>>>> --- a/mm/memory_hotplug.c
>>>> +++ b/mm/memory_hotplug.c
>>>> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
>>>>    	pg_data_t *pgdat = NODE_DATA(nid);
>>>>    	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>>>    
>>>> -	if (zone_is_empty(movable_zone))
>>>> +	if (zone_is_empty(movable_zone)) {
>>>> +	#ifdef CONFIG_MOVABLE_NODE
>>>> +		return 1;
>>>> +	#else
>>>>    		return 0;
>>>> -
>>>> +	#endif
>>>> +	}
>>>>    	if (movable_zone->zone_start_pfn <= start_pfn)
>>>>    		return 1;
>>> Cleaner:
>>>
>>> --- a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
>>> +++ a/mm/memory_hotplug.c
>>> @@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
>>>    	pg_data_t *pgdat = NODE_DATA(nid);
>>>    	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>>    
>>> -	if (zone_is_empty(movable_zone)) {
>>> -	#ifdef CONFIG_MOVABLE_NODE
>>> -		return 1;
>>> -	#else
>>> -		return 0;
>>> -	#endif
>>> -	}
>>> +	if (zone_is_empty(movable_zone))
>>> +		return IS_ENABLED(CONFIG_MOVABLE_NODE);
>>> +
>>>    	if (movable_zone->zone_start_pfn <= start_pfn)
>>>    		return 1;
>>>    
>>> _
>>>
>>> .
>>>
> .
>


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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-25 10:25       ` Changsheng Liu
@ 2015-08-25 11:13         ` Vlastimil Babka
  2015-08-26  0:36           ` Changsheng Liu
  0 siblings, 1 reply; 9+ messages in thread
From: Vlastimil Babka @ 2015-08-25 11:13 UTC (permalink / raw)
  To: Changsheng Liu, Yasuaki Ishimatsu, Andrew Morton
  Cc: isimatu.yasuaki, linux-mm, linux-kernel, yanxiaofeng, Changsheng Liu

On 08/25/2015 12:25 PM, Changsheng Liu wrote:
> Thanks very much for your review, I can move the memory from normal zone
> to movable zone succesfully.
> And thank you for let me understand the memory mechanism better.
> 在 2015/8/25 3:15, Yasuaki Ishimatsu 写道:

So you agree to drop the patch from -mm?

>> Hi
>> On Thu, 20 Aug 2015 14:15:13 +0800
>> Changsheng Liu <liuchangsheng@inspur.com> wrote:
>>
>>> Hi Andrew Morton:
>>> First, thanks very much for your review, I will update codes according
>>> to  your suggestio
>>>
>>> 在 2015/8/20 7:50, Andrew Morton 写道:
>>>> On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu <liuchangsheng@inspur.com> wrote:
>>>>
>>>>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>>>>
>>>>> When memory hot added, the function should_add_memory_movable
>>>>> always return 0,because the movable zone is empty,
>>>>> so the memory that hot added will add to normal zone even if
>>>>> we want to remove the memory.
>>>>> So we change the function should_add_memory_movable,if the user
>>>>> config CONFIG_MOVABLE_NODE it will return 1 when
>>>>> movable zone is empty
>>>> I cleaned this up a bit:
>>>>
>>>> : Subject: mm: memory hot-add: memory can not been added to movable zone
>>>> :
>>>> : When memory is hot added, should_add_memory_movable() always returns 0
>>>> : because the movable zone is empty, so the memory that was hot added will
>>>> : add to the normal zone even if we want to remove the memory.
>>>> :
>>>> : So we change should_add_memory_movable(): if the user config
>>>> : CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.
>>>>
>>>> But I don't understand the "even if we want to remove the memory".
>>>> This is hot-add, not hot-remove.  What do you mean here?
>>>        After the system startup, we hot added one memory. After some time
>>> we wanted to hot remove the memroy that was hot added,
>>>        but we could not offline some memory blocks successfully because
>>> the memory was added to normal zone defaultly and the value of the file
>>>        named removable under some memory blocks is 0.
>> For this, we prepared online_movable. When memory is onlined by online_movable,
>> the memory move from ZONE_NORMAL to ZONE_MOVABLE.
>>
>> Ex.
>> # echo online_movable > /sys/devices/system/memory/memoryXXX/state
>>
>> Thanks,
>> Yasuaki Ishimatsu
>>
>>>        we checked the value of the file under some memory blocks as follows:
>>>        "cat /sys/devices/system/memory/ memory***/removable"
>>>        When memory being hot added we let the memory be added to movable
>>> zone,
>>>        so we will be able to hot remove the memory that have been hot added
>>>>> --- a/mm/memory_hotplug.c
>>>>> +++ b/mm/memory_hotplug.c
>>>>> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
>>>>>     	pg_data_t *pgdat = NODE_DATA(nid);
>>>>>     	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>>>>
>>>>> -	if (zone_is_empty(movable_zone))
>>>>> +	if (zone_is_empty(movable_zone)) {
>>>>> +	#ifdef CONFIG_MOVABLE_NODE
>>>>> +		return 1;
>>>>> +	#else
>>>>>     		return 0;
>>>>> -
>>>>> +	#endif
>>>>> +	}
>>>>>     	if (movable_zone->zone_start_pfn <= start_pfn)
>>>>>     		return 1;
>>>> Cleaner:
>>>>
>>>> --- a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
>>>> +++ a/mm/memory_hotplug.c
>>>> @@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
>>>>     	pg_data_t *pgdat = NODE_DATA(nid);
>>>>     	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>>>
>>>> -	if (zone_is_empty(movable_zone)) {
>>>> -	#ifdef CONFIG_MOVABLE_NODE
>>>> -		return 1;
>>>> -	#else
>>>> -		return 0;
>>>> -	#endif
>>>> -	}
>>>> +	if (zone_is_empty(movable_zone))
>>>> +		return IS_ENABLED(CONFIG_MOVABLE_NODE);
>>>> +
>>>>     	if (movable_zone->zone_start_pfn <= start_pfn)
>>>>     		return 1;
>>>>
>>>> _
>>>>
>>>> .
>>>>
>> .
>>
>


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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-25 11:13         ` Vlastimil Babka
@ 2015-08-26  0:36           ` Changsheng Liu
  2015-08-26  6:12             ` Vlastimil Babka
  0 siblings, 1 reply; 9+ messages in thread
From: Changsheng Liu @ 2015-08-26  0:36 UTC (permalink / raw)
  To: Vlastimil Babka, Yasuaki Ishimatsu, Andrew Morton
  Cc: isimatu.yasuaki, linux-mm, linux-kernel, yanxiaofeng, Changsheng Liu



在 2015/8/25 19:13, Vlastimil Babka 写道:
> On 08/25/2015 12:25 PM, Changsheng Liu wrote:
>> Thanks very much for your review, I can move the memory from normal zone
>> to movable zone succesfully.
>> And thank you for let me understand the memory mechanism better.
>> 在 2015/8/25 3:15, Yasuaki Ishimatsu 写道:
>
> So you agree to drop the patch from -mm?
     The system add memory to normal zone defaultly so that it can be 
used by kernel and then we can not move the memory to movable zone.
     The patch can add the memory to movable zone directlly.
>
>>> Hi
>>> On Thu, 20 Aug 2015 14:15:13 +0800
>>> Changsheng Liu <liuchangsheng@inspur.com> wrote:
>>>
>>>> Hi Andrew Morton:
>>>> First, thanks very much for your review, I will update codes according
>>>> to  your suggestio
>>>>
>>>> 在 2015/8/20 7:50, Andrew Morton 写道:
>>>>> On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu 
>>>>> <liuchangsheng@inspur.com> wrote:
>>>>>
>>>>>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>>>>>
>>>>>> When memory hot added, the function should_add_memory_movable
>>>>>> always return 0,because the movable zone is empty,
>>>>>> so the memory that hot added will add to normal zone even if
>>>>>> we want to remove the memory.
>>>>>> So we change the function should_add_memory_movable,if the user
>>>>>> config CONFIG_MOVABLE_NODE it will return 1 when
>>>>>> movable zone is empty
>>>>> I cleaned this up a bit:
>>>>>
>>>>> : Subject: mm: memory hot-add: memory can not been added to 
>>>>> movable zone
>>>>> :
>>>>> : When memory is hot added, should_add_memory_movable() always 
>>>>> returns 0
>>>>> : because the movable zone is empty, so the memory that was hot 
>>>>> added will
>>>>> : add to the normal zone even if we want to remove the memory.
>>>>> :
>>>>> : So we change should_add_memory_movable(): if the user config
>>>>> : CONFIG_MOVABLE_NODE it will return 1 when the movable zone is 
>>>>> empty.
>>>>>
>>>>> But I don't understand the "even if we want to remove the memory".
>>>>> This is hot-add, not hot-remove.  What do you mean here?
>>>>        After the system startup, we hot added one memory. After 
>>>> some time
>>>> we wanted to hot remove the memroy that was hot added,
>>>>        but we could not offline some memory blocks successfully 
>>>> because
>>>> the memory was added to normal zone defaultly and the value of the 
>>>> file
>>>>        named removable under some memory blocks is 0.
>>> For this, we prepared online_movable. When memory is onlined by 
>>> online_movable,
>>> the memory move from ZONE_NORMAL to ZONE_MOVABLE.
>>>
>>> Ex.
>>> # echo online_movable > /sys/devices/system/memory/memoryXXX/state
>>>
>>> Thanks,
>>> Yasuaki Ishimatsu
>>>
>>>>        we checked the value of the file under some memory blocks as 
>>>> follows:
>>>>        "cat /sys/devices/system/memory/ memory***/removable"
>>>>        When memory being hot added we let the memory be added to 
>>>> movable
>>>> zone,
>>>>        so we will be able to hot remove the memory that have been 
>>>> hot added
>>>>>> --- a/mm/memory_hotplug.c
>>>>>> +++ b/mm/memory_hotplug.c
>>>>>> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int 
>>>>>> nid, u64 start, u64 size)
>>>>>>         pg_data_t *pgdat = NODE_DATA(nid);
>>>>>>         struct zone *movable_zone = pgdat->node_zones + 
>>>>>> ZONE_MOVABLE;
>>>>>>
>>>>>> -    if (zone_is_empty(movable_zone))
>>>>>> +    if (zone_is_empty(movable_zone)) {
>>>>>> +    #ifdef CONFIG_MOVABLE_NODE
>>>>>> +        return 1;
>>>>>> +    #else
>>>>>>             return 0;
>>>>>> -
>>>>>> +    #endif
>>>>>> +    }
>>>>>>         if (movable_zone->zone_start_pfn <= start_pfn)
>>>>>>             return 1;
>>>>> Cleaner:
>>>>>
>>>>> --- 
>>>>> a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
>>>>> +++ a/mm/memory_hotplug.c
>>>>> @@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
>>>>>         pg_data_t *pgdat = NODE_DATA(nid);
>>>>>         struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>>>>
>>>>> -    if (zone_is_empty(movable_zone)) {
>>>>> -    #ifdef CONFIG_MOVABLE_NODE
>>>>> -        return 1;
>>>>> -    #else
>>>>> -        return 0;
>>>>> -    #endif
>>>>> -    }
>>>>> +    if (zone_is_empty(movable_zone))
>>>>> +        return IS_ENABLED(CONFIG_MOVABLE_NODE);
>>>>> +
>>>>>         if (movable_zone->zone_start_pfn <= start_pfn)
>>>>>             return 1;
>>>>>
>>>>> _
>>>>>
>>>>> .
>>>>>
>>> .
>>>
>>
>
> .
>


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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-26  0:36           ` Changsheng Liu
@ 2015-08-26  6:12             ` Vlastimil Babka
  2015-08-26  7:53               ` Changsheng Liu
  0 siblings, 1 reply; 9+ messages in thread
From: Vlastimil Babka @ 2015-08-26  6:12 UTC (permalink / raw)
  To: Changsheng Liu, Yasuaki Ishimatsu, Andrew Morton
  Cc: isimatu.yasuaki, linux-mm, linux-kernel, yanxiaofeng, Changsheng Liu

On 26.8.2015 2:36, Changsheng Liu wrote:
> 
> 
> 在 2015/8/25 19:13, Vlastimil Babka 写道:
>> On 08/25/2015 12:25 PM, Changsheng Liu wrote:
>>> Thanks very much for your review, I can move the memory from normal zone
>>> to movable zone succesfully.
>>> And thank you for let me understand the memory mechanism better.
>>> 在 2015/8/25 3:15, Yasuaki Ishimatsu 写道:
>>
>> So you agree to drop the patch from -mm?
>      The system add memory to normal zone defaultly so that it can be 
> used by kernel and then we can not move the memory to movable zone.
>      The patch can add the memory to movable zone directlly.

I thought that you confirmed that the following works?
echo online_movable > /sys/devices/system/memory/memoryXXX/state

If you want it to be the default, there's the node_movable kernel boot option.
Does it work for you?

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

* Re: [PATCH] Memory hot added,The memory can not been added to movable zone
  2015-08-26  6:12             ` Vlastimil Babka
@ 2015-08-26  7:53               ` Changsheng Liu
  0 siblings, 0 replies; 9+ messages in thread
From: Changsheng Liu @ 2015-08-26  7:53 UTC (permalink / raw)
  To: Vlastimil Babka, Yasuaki Ishimatsu, Andrew Morton
  Cc: isimatu.yasuaki, linux-mm, linux-kernel, yanxiaofeng, Changsheng Liu



在 2015/8/26 14:12, Vlastimil Babka 写道:
> On 26.8.2015 2:36, Changsheng Liu wrote:
>>
>> 在 2015/8/25 19:13, Vlastimil Babka 写道:
>>> On 08/25/2015 12:25 PM, Changsheng Liu wrote:
>>>> Thanks very much for your review, I can move the memory from normal zone
>>>> to movable zone succesfully.
>>>> And thank you for let me understand the memory mechanism better.
>>>> 在 2015/8/25 3:15, Yasuaki Ishimatsu 写道:
>>> So you agree to drop the patch from -mm?
>>       The system add memory to normal zone defaultly so that it can be
>> used by kernel and then we can not move the memory to movable zone.
>>       The patch can add the memory to movable zone directlly.
> I thought that you confirmed that the following works?
> echo online_movable > /sys/devices/system/memory/memoryXXX/state
>
> If you want it to be the default, there's the node_movable kernel boot option.
> Does it work for you?
> .
     It does not work when memory is hot added.
>


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

end of thread, other threads:[~2015-08-26  7:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-19  8:18 [PATCH] Memory hot added,The memory can not been added to movable zone Changsheng Liu
2015-08-19 23:50 ` Andrew Morton
2015-08-20  5:59   ` Changsheng Liu
     [not found]   ` <55D57071.1080901@inspur.com>
2015-08-24 19:15     ` Yasuaki Ishimatsu
2015-08-25 10:25       ` Changsheng Liu
2015-08-25 11:13         ` Vlastimil Babka
2015-08-26  0:36           ` Changsheng Liu
2015-08-26  6:12             ` Vlastimil Babka
2015-08-26  7:53               ` Changsheng Liu

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