Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1252427 > unrolled thread

Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable zone defaultly

Started byChangsheng Liu <liuchangsheng@inspur.com>
First post2015-10-21 04:30 +0200
Last post2015-10-23 20:40 +0200
Articles 5 — 4 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable  zone defaultly Changsheng Liu <liuchangsheng@inspur.com> - 2015-10-21 04:30 +0200
    Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable  zone defaultly Vlastimil Babka <vbabka@suse.cz> - 2015-10-21 11:10 +0200
      Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable  zone defaultly Tang Chen <tangchen@cn.fujitsu.com> - 2015-10-21 11:30 +0200
        Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable  zone defaultly Tang Chen <tangchen@cn.fujitsu.com> - 2015-10-21 11:30 +0200
        Re: [PATCH V7] mm: memory hot-add: memory can not be added to  movable zone defaultly Yasuaki Ishimatsu <yasu.isimatu@gmail.com> - 2015-10-23 20:40 +0200

#1252427 — Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable zone defaultly

FromChangsheng Liu <liuchangsheng@inspur.com>
Date2015-10-21 04:30 +0200
SubjectRe: [PATCH V7] mm: memory hot-add: memory can not be added to movable zone defaultly
Message-ID<qlRk5-5Yu-3@gated-at.bofh.it>

在 2015/10/15 0:18, Vlastimil Babka 写道:
> On 10/12/2015 08:58 AM, Changsheng Liu wrote:
>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>
>> After the user config CONFIG_MOVABLE_NODE,
>> When the memory is hot added, should_add_memory_movable() return 0
>> because all zones including ZONE_MOVABLE are empty,
>> so the memory that was hot added will be assigned to ZONE_NORMAL
>> and ZONE_NORMAL will be created firstly.
>> But we want the whole node to be added to ZONE_MOVABLE by default.
>>
>> So we change should_add_memory_movable(): if the user config
>> CONFIG_MOVABLE_NODE and sysctl parameter hotadd_memory_as_movable is 1
>> and the ZONE_NORMAL is empty or the pfn of the hot-added memory
>> is after the end of the ZONE_NORMAL it will always return 1
>> and then the whole node will be added to ZONE_MOVABLE by default.
>> If we want the node to be assigned to ZONE_NORMAL,
>> we can do it as follows:
>> "echo online_kernel > /sys/devices/system/memory/memoryXXX/state"
>>
>> By the patch, the behavious of kernel is changed by sysctl,
>> user can automatically create movable memory
>> by only the following udev rule:
>> SUBSYSTEM=="memory", ACTION=="add",
>> ATTR{state}=="offline", ATTR{state}="online"
     I'm sorry for replying you so late due to the busy business trip.
> So just to be clear, we are adding a new sysctl, because the existing
> movable_node kernel option, which is checked by movable_node_is_enabled(), and
> does the same thing for non-hot-added-memory (?) cannot be reused for hot-added
> memory, as that would be a potentially surprising behavior change? Correct? Then
> this should be mentioned in the changelog too, and wherever "movable_node" is
> documented should also mention the new sysctl. Personally, I would expect
> movable_node to affect hot-added memory as well, and would be surprised that it
> doesn't...
     I think it can let the user decides when to use this feature.
     The user can enable the feature when making the hot_added memory  
of a node movable and
     make the feature disable to assign the hot_added memory of the next 
node to ZONE_NORMAL .
>
>> Signed-off-by: Changsheng Liu <liuchangsheng@inspur.com>
>> Signed-off-by: Xiaofeng Yan <yanxiaofeng@inspur.com>
>> Tested-by: Dongdong Fan <fandd@inspur.com>
>> Cc: Wang Nan <wangnan0@huawei.com>
>> Cc: Dave Hansen <dave.hansen@intel.com>
>> Cc: Yinghai Lu <yinghai@kernel.org>
>> Cc: Tang Chen <tangchen@cn.fujitsu.com>
>> Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>> Cc: Toshi Kani <toshi.kani@hp.com>
>> Cc: Xishi Qiu <qiuxishi@huawei.com>
>> ---
>>   Documentation/memory-hotplug.txt |    5 ++++-
>>   kernel/sysctl.c                  |   15 +++++++++++++++
>>   mm/memory_hotplug.c              |   24 ++++++++++++++++++++++++
>>   3 files changed, 43 insertions(+), 1 deletions(-)
>>
>> diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt
>> index ce2cfcf..7ac7485 100644
>> --- a/Documentation/memory-hotplug.txt
>> +++ b/Documentation/memory-hotplug.txt
>> @@ -277,7 +277,7 @@ And if the memory block is in ZONE_MOVABLE, you can change it to ZONE_NORMAL:
>>   After this, memory block XXX's state will be 'online' and the amount of
>>   available memory will be increased.
>>   
>> -Currently, newly added memory is added as ZONE_NORMAL (for powerpc, ZONE_DMA).
>> +Currently, newly added memory is added as ZONE_NORMAL or ZONE_MOVABLE (for powerpc, ZONE_DMA).
>>   This may be changed in future.
>>   
>>   
>> @@ -319,6 +319,9 @@ creates ZONE_MOVABLE as following.
>>     Size of memory not for movable pages (not for offline) is TOTAL - ZZZZ.
>>     Size of memory for movable pages (for offline) is ZZZZ.
>>   
>> +And a sysctl parameter for assigning the hot added memory to ZONE_MOVABLE is
>> +supported. If the value of "kernel/hotadd_memory_as_movable" is 1,the hot added
>> +memory will be assigned to ZONE_MOVABLE by default.
>>   
>>   Note: Unfortunately, there is no information to show which memory block belongs
>>   to ZONE_MOVABLE. This is TBD.
>> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
>> index 19b62b5..16b1501 100644
>> --- a/kernel/sysctl.c
>> +++ b/kernel/sysctl.c
>> @@ -166,6 +166,10 @@ extern int unaligned_dump_stack;
>>   extern int no_unaligned_warning;
>>   #endif
>>   
>> +#ifdef CONFIG_MOVABLE_NODE
>> +extern int hotadd_memory_as_movable;
>> +#endif
>> +
>>   #ifdef CONFIG_PROC_SYSCTL
>>   
>>   #define SYSCTL_WRITES_LEGACY	-1
>> @@ -1139,6 +1143,17 @@ static struct ctl_table kern_table[] = {
>>   		.proc_handler	= timer_migration_handler,
>>   	},
>>   #endif
>> +/*If the value of "kernel/hotadd_memory_as_movable" is 1,the hot added
>> + * memory will be assigned to ZONE_MOVABLE by default.*/
>> +#ifdef CONFIG_MOVABLE_NODE
>> +	{
>> +		.procname	= "hotadd_memory_as_movable",
>> +		.data		= &hotadd_memory_as_movable,
>> +		.maxlen		= sizeof(int),
>> +		.mode		= 0644,
>> +		.proc_handler	= proc_dointvec,
>> +	},
>> +#endif
>>   	{ }
>>   };
>>   
>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>> index 26fbba7..eca5512 100644
>> --- a/mm/memory_hotplug.c
>> +++ b/mm/memory_hotplug.c
>> @@ -37,6 +37,11 @@
>>   
>>   #include "internal.h"
>>   
>> +/*If the global variable value is 1,
>> + * the hot added memory will be assigned to ZONE_MOVABLE by default
>> + */
>> +int hotadd_memory_as_movable;
>> +
>>   /*
>>    * online_page_callback contains pointer to current page onlining function.
>>    * Initially it is generic_online_page(). If it is required it could be
>> @@ -1190,6 +1195,9 @@ static int check_hotplug_memory_range(u64 start, u64 size)
>>   /*
>>    * If movable zone has already been setup, newly added memory should be check.
>>    * If its address is higher than movable zone, it should be added as movable.
>> + * And if system config CONFIG_MOVABLE_NODE and set the sysctl parameter
>> + * "hotadd_memory_as_movable" and added memory does not overlap the zone
>> + * before MOVABLE_ZONE,the memory will be added as movable.
>>    * Without this check, movable zone may overlap with other zone.
>>    */
>>   static int should_add_memory_movable(int nid, u64 start, u64 size)
>> @@ -1197,6 +1205,22 @@ static int should_add_memory_movable(int nid, u64 start, u64 size)
>>   	unsigned long start_pfn = start >> PAGE_SHIFT;
>>   	pg_data_t *pgdat = NODE_DATA(nid);
>>   	struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>> +	struct zone *pre_zone = pgdat->node_zones + (ZONE_MOVABLE - 1);
>> +	/*
>> +	 * The system configs CONFIG_MOVABLE_NODE to assign a node
>> +	 * which has only movable memory,so the hot-added memory should
>> +	 * be assigned to ZONE_MOVABLE by default,
>> +	 * but the function zone_for_memory() assign the hot-added memory
>> +	 * to ZONE_NORMAL(x86_64) by default.Kernel does not allow to
>> +	 * create ZONE_MOVABLE before ZONE_NORMAL,So if the value of
>> +	 * sysctl parameter "hotadd_memory_as_movable" is 1
>> +	 * and the ZONE_NORMAL is empty or the pfn of the hot-added memory
>> +	 * is after the end of ZONE_NORMAL
>> +	 * the hot-added memory will be assigned to ZONE_MOVABLE.
>> +	 */
>> +	if (hotadd_memory_as_movable
>> +	&& (zone_is_empty(pre_zone) || zone_end_pfn(pre_zone) <= start_pfn))
>> +		return 1;
>>   
>>   	if (zone_is_empty(movable_zone))
>>   		return 0;
>>
> .
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1252591

FromVlastimil Babka <vbabka@suse.cz>
Date2015-10-21 11:10 +0200
Message-ID<qlXzb-6P0-3@gated-at.bofh.it>
In reply to#1252427
On 10/21/2015 04:20 AM, Changsheng Liu wrote:
>
>
> 在 2015/10/15 0:18, Vlastimil Babka 写道:
>> On 10/12/2015 08:58 AM, Changsheng Liu wrote:
>>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>>
>>> After the user config CONFIG_MOVABLE_NODE,
>>> When the memory is hot added, should_add_memory_movable() return 0
>>> because all zones including ZONE_MOVABLE are empty,
>>> so the memory that was hot added will be assigned to ZONE_NORMAL
>>> and ZONE_NORMAL will be created firstly.
>>> But we want the whole node to be added to ZONE_MOVABLE by default.
>>>
>>> So we change should_add_memory_movable(): if the user config
>>> CONFIG_MOVABLE_NODE and sysctl parameter hotadd_memory_as_movable is 1
>>> and the ZONE_NORMAL is empty or the pfn of the hot-added memory
>>> is after the end of the ZONE_NORMAL it will always return 1
>>> and then the whole node will be added to ZONE_MOVABLE by default.
>>> If we want the node to be assigned to ZONE_NORMAL,
>>> we can do it as follows:
>>> "echo online_kernel > /sys/devices/system/memory/memoryXXX/state"
>>>
>>> By the patch, the behavious of kernel is changed by sysctl,
>>> user can automatically create movable memory
>>> by only the following udev rule:
>>> SUBSYSTEM=="memory", ACTION=="add",
>>> ATTR{state}=="offline", ATTR{state}="online"
>       I'm sorry for replying you so late due to the busy business trip.
>> So just to be clear, we are adding a new sysctl, because the existing
>> movable_node kernel option, which is checked by movable_node_is_enabled(), and
>> does the same thing for non-hot-added-memory (?) cannot be reused for hot-added
>> memory, as that would be a potentially surprising behavior change? Correct? Then
>> this should be mentioned in the changelog too, and wherever "movable_node" is
>> documented should also mention the new sysctl. Personally, I would expect
>> movable_node to affect hot-added memory as well, and would be surprised that it
>> doesn't...
>       I think it can let the user decides when to use this feature.
>       The user can enable the feature when making the hot_added memory
> of a node movable and
>       make the feature disable to assign the hot_added memory of the next
> node to ZONE_NORMAL .

So you mean sysctl is more flexible than boot option. OK, but wasn't 
such flexibility already provided by "echo online_kernel" vs "echo 
online_movable"? It doesn't sound like a strong reason for a new sysctl? 
Not doing surprising behavior change maybe does...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1252609

FromTang Chen <tangchen@cn.fujitsu.com>
Date2015-10-21 11:30 +0200
Message-ID<qlXSx-7bk-9@gated-at.bofh.it>
In reply to#1252591
On 10/21/2015 05:00 PM, Vlastimil Babka wrote:
> On 10/21/2015 04:20 AM, Changsheng Liu wrote:
>>
>>
>> 在 2015/10/15 0:18, Vlastimil Babka 写道:
>>> On 10/12/2015 08:58 AM, Changsheng Liu wrote:
>>>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>>>
>>>> After the user config CONFIG_MOVABLE_NODE,
>>>> When the memory is hot added, should_add_memory_movable() return 0
>>>> because all zones including ZONE_MOVABLE are empty,
>>>> so the memory that was hot added will be assigned to ZONE_NORMAL
>>>> and ZONE_NORMAL will be created firstly.
>>>> But we want the whole node to be added to ZONE_MOVABLE by default.
>>>>
>>>> So we change should_add_memory_movable(): if the user config
>>>> CONFIG_MOVABLE_NODE and sysctl parameter hotadd_memory_as_movable is 1
>>>> and the ZONE_NORMAL is empty or the pfn of the hot-added memory
>>>> is after the end of the ZONE_NORMAL it will always return 1
>>>> and then the whole node will be added to ZONE_MOVABLE by default.
>>>> If we want the node to be assigned to ZONE_NORMAL,
>>>> we can do it as follows:
>>>> "echo online_kernel > /sys/devices/system/memory/memoryXXX/state"
>>>>
>>>> By the patch, the behavious of kernel is changed by sysctl,
>>>> user can automatically create movable memory
>>>> by only the following udev rule:
>>>> SUBSYSTEM=="memory", ACTION=="add",
>>>> ATTR{state}=="offline", ATTR{state}="online"
>>       I'm sorry for replying you so late due to the busy business trip.
>>> So just to be clear, we are adding a new sysctl, because the existing
>>> movable_node kernel option, which is checked by 
>>> movable_node_is_enabled(), and
>>> does the same thing for non-hot-added-memory (?) cannot be reused 
>>> for hot-added
>>> memory, as that would be a potentially surprising behavior change? 
>>> Correct? Then
>>> this should be mentioned in the changelog too, and wherever 
>>> "movable_node" is
>>> documented should also mention the new sysctl. Personally, I would 
>>> expect
>>> movable_node to affect hot-added memory as well, and would be 
>>> surprised that it
>>> doesn't...
>>       I think it can let the user decides when to use this feature.
>>       The user can enable the feature when making the hot_added memory
>> of a node movable and
>>       make the feature disable to assign the hot_added memory of the 
>> next
>> node to ZONE_NORMAL .
>
> So you mean sysctl is more flexible than boot option. OK, but wasn't 
> such flexibility already provided by "echo online_kernel" vs "echo 
> online_movable"? It doesn't sound like a strong reason for a new 
> sysctl? Not doing surprising behavior change maybe does...
> .
>
Hi Vlastimil,

The current kernel will add hot-added memory to ZONE_NORMAL by default. 
If users use a udev rule as below:

SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"

it will online the memory as normal memory, which will not be hotpluggable.

Please refer to: https://lkml.org/lkml/2015/10/9/58

I think this is the root motivation of the patch.

But BTW, I'm quite familiar with udev rules, but can something like this 
work ?

SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online_movable"

I'm not sure. I added Ishimatu in.

For now, I think, if the above rule works, we don't need this patch. If 
not, maybe we should just change the kernel behavior to make the 
hot-added memory be added to ZONE_MOVABLE by default.

I don't have objection. But a sysctl doesn't sound necessary.

Thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1252620

FromTang Chen <tangchen@cn.fujitsu.com>
Date2015-10-21 11:30 +0200
Message-ID<qlXSy-7bk-35@gated-at.bofh.it>
In reply to#1252609
On 10/21/2015 05:18 PM, Tang Chen wrote:
>
> On 10/21/2015 05:00 PM, Vlastimil Babka wrote:
>> On 10/21/2015 04:20 AM, Changsheng Liu wrote:
>>>
>>>
>>> 在 2015/10/15 0:18, Vlastimil Babka 写道:
>>>> On 10/12/2015 08:58 AM, Changsheng Liu wrote:
>>>>> From: Changsheng Liu <liuchangcheng@inspur.com>
>>>>>
>>>>> After the user config CONFIG_MOVABLE_NODE,
>>>>> When the memory is hot added, should_add_memory_movable() return 0
>>>>> because all zones including ZONE_MOVABLE are empty,
>>>>> so the memory that was hot added will be assigned to ZONE_NORMAL
>>>>> and ZONE_NORMAL will be created firstly.
>>>>> But we want the whole node to be added to ZONE_MOVABLE by default.
>>>>>
>>>>> So we change should_add_memory_movable(): if the user config
>>>>> CONFIG_MOVABLE_NODE and sysctl parameter hotadd_memory_as_movable 
>>>>> is 1
>>>>> and the ZONE_NORMAL is empty or the pfn of the hot-added memory
>>>>> is after the end of the ZONE_NORMAL it will always return 1
>>>>> and then the whole node will be added to ZONE_MOVABLE by default.
>>>>> If we want the node to be assigned to ZONE_NORMAL,
>>>>> we can do it as follows:
>>>>> "echo online_kernel > /sys/devices/system/memory/memoryXXX/state"
>>>>>
>>>>> By the patch, the behavious of kernel is changed by sysctl,
>>>>> user can automatically create movable memory
>>>>> by only the following udev rule:
>>>>> SUBSYSTEM=="memory", ACTION=="add",
>>>>> ATTR{state}=="offline", ATTR{state}="online"
>>>       I'm sorry for replying you so late due to the busy business trip.
>>>> So just to be clear, we are adding a new sysctl, because the existing
>>>> movable_node kernel option, which is checked by 
>>>> movable_node_is_enabled(), and
>>>> does the same thing for non-hot-added-memory (?) cannot be reused 
>>>> for hot-added
>>>> memory, as that would be a potentially surprising behavior change? 
>>>> Correct? Then
>>>> this should be mentioned in the changelog too, and wherever 
>>>> "movable_node" is
>>>> documented should also mention the new sysctl. Personally, I would 
>>>> expect
>>>> movable_node to affect hot-added memory as well, and would be 
>>>> surprised that it
>>>> doesn't...
>>>       I think it can let the user decides when to use this feature.
>>>       The user can enable the feature when making the hot_added memory
>>> of a node movable and
>>>       make the feature disable to assign the hot_added memory of the 
>>> next
>>> node to ZONE_NORMAL .
>>
>> So you mean sysctl is more flexible than boot option. OK, but wasn't 
>> such flexibility already provided by "echo online_kernel" vs "echo 
>> online_movable"? It doesn't sound like a strong reason for a new 
>> sysctl? Not doing surprising behavior change maybe does...
>> .
>>
> Hi Vlastimil,
>
> The current kernel will add hot-added memory to ZONE_NORMAL by 
> default. If users use a udev rule as below:
>
> SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", 
> ATTR{state}="online"
>
> it will online the memory as normal memory, which will not be 
> hotpluggable.
>
> Please refer to: https://lkml.org/lkml/2015/10/9/58
>
> I think this is the root motivation of the patch.
>
> But BTW, I'm quite familiar with udev rules, but can something like 
> this work ?

sorry, I'm NOT quite familiar with udev rules, ......

>
> SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", 
> ATTR{state}="online_movable"
>
> I'm not sure. I added Ishimatu in.
>
> For now, I think, if the above rule works, we don't need this patch. 
> If not, maybe we should just change the kernel behavior to make the 
> hot-added memory be added to ZONE_MOVABLE by default.
>
> I don't have objection. But a sysctl doesn't sound necessary.
>
> Thanks.
>
> -- 
> To unsubscribe from this list: send the line "unsubscribe 
> linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> .
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1254882 — Re: [PATCH V7] mm: memory hot-add: memory can not be added to movable zone defaultly

FromYasuaki Ishimatsu <yasu.isimatu@gmail.com>
Date2015-10-23 20:40 +0200
SubjectRe: [PATCH V7] mm: memory hot-add: memory can not be added to movable zone defaultly
Message-ID<qmPpT-1c8-1@gated-at.bofh.it>
In reply to#1252609
On Wed, 21 Oct 2015 17:18:36 +0800
Tang Chen <tangchen@cn.fujitsu.com> wrote:

> 
> On 10/21/2015 05:00 PM, Vlastimil Babka wrote:
> > On 10/21/2015 04:20 AM, Changsheng Liu wrote:
> >>
> >>
> >> 在 2015/10/15 0:18, Vlastimil Babka 写道:
> >>> On 10/12/2015 08:58 AM, Changsheng Liu wrote:
> >>>> From: Changsheng Liu <liuchangcheng@inspur.com>
> >>>>
> >>>> After the user config CONFIG_MOVABLE_NODE,
> >>>> When the memory is hot added, should_add_memory_movable() return 0
> >>>> because all zones including ZONE_MOVABLE are empty,
> >>>> so the memory that was hot added will be assigned to ZONE_NORMAL
> >>>> and ZONE_NORMAL will be created firstly.
> >>>> But we want the whole node to be added to ZONE_MOVABLE by default.
> >>>>
> >>>> So we change should_add_memory_movable(): if the user config
> >>>> CONFIG_MOVABLE_NODE and sysctl parameter hotadd_memory_as_movable is 1
> >>>> and the ZONE_NORMAL is empty or the pfn of the hot-added memory
> >>>> is after the end of the ZONE_NORMAL it will always return 1
> >>>> and then the whole node will be added to ZONE_MOVABLE by default.
> >>>> If we want the node to be assigned to ZONE_NORMAL,
> >>>> we can do it as follows:
> >>>> "echo online_kernel > /sys/devices/system/memory/memoryXXX/state"
> >>>>
> >>>> By the patch, the behavious of kernel is changed by sysctl,
> >>>> user can automatically create movable memory
> >>>> by only the following udev rule:
> >>>> SUBSYSTEM=="memory", ACTION=="add",
> >>>> ATTR{state}=="offline", ATTR{state}="online"
> >>       I'm sorry for replying you so late due to the busy business trip.
> >>> So just to be clear, we are adding a new sysctl, because the existing
> >>> movable_node kernel option, which is checked by 
> >>> movable_node_is_enabled(), and
> >>> does the same thing for non-hot-added-memory (?) cannot be reused 
> >>> for hot-added
> >>> memory, as that would be a potentially surprising behavior change? 
> >>> Correct? Then
> >>> this should be mentioned in the changelog too, and wherever 
> >>> "movable_node" is
> >>> documented should also mention the new sysctl. Personally, I would 
> >>> expect
> >>> movable_node to affect hot-added memory as well, and would be 
> >>> surprised that it
> >>> doesn't...
> >>       I think it can let the user decides when to use this feature.
> >>       The user can enable the feature when making the hot_added memory
> >> of a node movable and
> >>       make the feature disable to assign the hot_added memory of the 
> >> next
> >> node to ZONE_NORMAL .
> >
> > So you mean sysctl is more flexible than boot option. OK, but wasn't 
> > such flexibility already provided by "echo online_kernel" vs "echo 
> > online_movable"? It doesn't sound like a strong reason for a new 
> > sysctl? Not doing surprising behavior change maybe does...
> > .
> >
> Hi Vlastimil,
> 
> The current kernel will add hot-added memory to ZONE_NORMAL by default. 
> If users use a udev rule as below:
> 
> SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"
> 
> it will online the memory as normal memory, which will not be hotpluggable.
> 
> Please refer to: https://lkml.org/lkml/2015/10/9/58
> 
> I think this is the root motivation of the patch.
> 

> But BTW, I'm quite familiar with udev rules, but can something like this 
> work ?
> 
> SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online_movable"
> 
> I'm not sure. I added Ishimatu in.

I think the udev rules fails to online memory as movable.

When hot adding memory, the memory is managed as ZONE_NORMAL.
And add events of memory section are notified to udev in ascending
order, like 0->1->2->3. Thus udev starts to online memory from section 0.
But to change zone from ZONE_NORMAL to ZONE_MOVALBE, udev onlines memory
in descending order, like 3->2->1->0. So the udev rules cannot online
memory as movable.

Thanks,
Yasuaki Ishimatsu

> 
> For now, I think, if the above rule works, we don't need this patch. If 
> not, maybe we should just change the kernel behavior to make the 
> hot-added memory be added to ZONE_MOVABLE by default.
> 
> I don't have objection. But a sysctl doesn't sound necessary.



> 
> Thanks.
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web