From: Wen Congyang <wency@cn.fujitsu.com>
To: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>,
Mel Gorman <mgorman@suse.de>,
David Rientjes <rientjes@google.com>,
LKML <linux-kernel@vger.kernel.org>,
x86 maintainers <x86@kernel.org>,
Jiang Liu <jiang.liu@huawei.com>,
Rusty Russell <rusty@rustcorp.com.au>,
Yinghai Lu <yinghai@kernel.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [V5 PATCH 00/26] mm, memory-hotplug: dynamic configure movable memory and introduce movable node
Date: Wed, 31 Oct 2012 17:30:14 +0800 [thread overview]
Message-ID: <5090EFA6.6030800@cn.fujitsu.com> (raw)
In-Reply-To: <508FA2F4.1050608@jp.fujitsu.com>
At 10/30/2012 05:50 PM, Yasuaki Ishimatsu Wrote:
> HI Lai,
>
> The patch-set is huge. Therefore, we hesitate to read the patch-set.
> I think the patch-set has multiple feature developments.
> - Development of online_movable [PATCH 1 - 3]
> - Cleanup node_state_attr [PATCH 4]
> - Introduce N_MEMORY [PATCH 5 - 18]
> - Development of kernelcore_max_addr [PATCH 19 - 25]
> - Bug fix [PATCH 26]
I have splited it to 6 patchsets:
part1: patch 1-3
http://marc.info/?l=linux-kernel&m=135166176108186&w=2
part2: patch 4
http://marc.info/?l=linux-kernel&m=135166705909544&w=2
part3: patch 5-18
http://marc.info/?l=linux-kernel&m=135167050510527&w=2
part4: patch 19-20
http://marc.info/?l=linux-kernel&m=135167344211401&w=2
part5: patch 21-25
http://marc.info/?l=linux-kernel&m=135167497312063&w=2
part6: patch 26
http://marc.info/?l=linux-kernel&m=135167512612132&w=2
>
> Why don't you separate the patch-set into each feature development?
> By separating the patch-set, many people can easily participate
> in your development.
>
> Thanks,
> Yasuaki Ishimatsu
>
> 2012/10/30 0:07, Lai Jiangshan wrote:
>> Movable memory is a very important concept of memory-management,
>> we need to consolidate it and make use of it on systems.
>>
>> Movable memory is needed for
>> o anti-fragmentation(hugepage, big-order allocation...)
>> o logic hot-remove(virtualization, Memory capacity on Demand)
>> o physic hot-remove(power-saving, hardware partitioning, hardware fault management)
>>
>> All these require dynamic configuring the memory and making better utilities of memories
>> and safer. We also need physic hot-remove, so we need movable node too.
>> (Although some systems support physic-memory-migration, we don't require all
>> memory on physic-node is movable, but movable node is still needed here
>> for logic-node if we want to make physic-migration is transparent)
>>
>> We add dynamic configuration commands "online_movalbe" and "online_kernel".
>> We also add non-dynamic boot option kernelcore_max_addr.
>> We may add some more dynamic/non-dynamic configuration in future.
>>
>>
>> The patchset is based on 3.7-rc3 with these three patches already applied:
>> https://lkml.org/lkml/2012/10/24/151
>> https://lkml.org/lkml/2012/10/26/150
>>
>> You can also simply pull all the patches from:
>> git pull https://github.com/laijs/linux.git hotplug-next
>>
>>
>>
>> Issues):
>>
>> mempolicy(M_BIND) don't act well when the nodemask has movable nodes only,
>> the kernel allocation will fail and the task can't create new task or other
>> kernel objects.
>>
>> So we change the strategy/policy
>> when the bound nodemask has movable node(s) only, we only
>> apply mempolicy for userspace allocation, don't apply it
>> for kernel allocation.
>>
>> CPUSET also has the same problem, but the code spread in page_alloc.c,
>> and we doesn't fix it yet, we can/will change allocation strategy to one of
>> these 3 strategies:
>> 1) the same strategy as mempolicy
>> 2) change cpuset, make nodemask always has at least a normal node
>> 3) split nodemask: nodemask_user and nodemask_kernel
>>
>> Thoughts?
>>
>>
>>
>> Patches):
>>
>> patch1-3: add online_movable and online_kernel, bot don't result movable node
>> Patch4 cleanup for node_state_attr
>> Patch5 introduce N_MEMORY
>> Patch6-17 use N_MEMORY instead N_HIGH_MEMORY.
>> The patches are separated by subsystem,
>> Patch18 also changes the node_states initialization
>> Patch18-20 Add MOVABLE-dedicated node
>> Patch21-25 Add kernelcore_max_addr
>> patch26: mempolicy handle movable node
>>
>>
>>
>>
>> Changes):
>>
>> change V5-V4:
>> consolidate online_movable/online_kernel
>> nodemask management
>>
>> change V4-v3
>> rebase.
>> online_movable/online_kernel can create a zone from empty
>> or empyt a zone
>>
>> change V3-v2:
>> Proper nodemask management
>>
>> change V2-V1:
>>
>> The original V1 patchset of MOVABLE-dedicated node is here:
>> http://comments.gmane.org/gmane.linux.kernel.mm/78122
>>
>> The new V2 adds N_MEMORY and a notion of "MOVABLE-dedicated node".
>> And fix some related problems.
>>
>> The orignal V1 patchset of "add online_movable" is here:
>> https://lkml.org/lkml/2012/7/4/145
>>
>> The new V2 discards the MIGRATE_HOTREMOVE approach, and use a more straight
>> implementation(only 1 patch).
>>
>>
>>
>> Lai Jiangshan (22):
>> mm, memory-hotplug: dynamic configure movable memory and portion
>> memory
>> memory_hotplug: handle empty zone when online_movable/online_kernel
>> memory_hotplug: ensure every online node has NORMAL memory
>> node: cleanup node_state_attr
>> node_states: introduce N_MEMORY
>> cpuset: use N_MEMORY instead N_HIGH_MEMORY
>> procfs: use N_MEMORY instead N_HIGH_MEMORY
>> memcontrol: use N_MEMORY instead N_HIGH_MEMORY
>> oom: use N_MEMORY instead N_HIGH_MEMORY
>> mm,migrate: use N_MEMORY instead N_HIGH_MEMORY
>> mempolicy: use N_MEMORY instead N_HIGH_MEMORY
>> hugetlb: use N_MEMORY instead N_HIGH_MEMORY
>> vmstat: use N_MEMORY instead N_HIGH_MEMORY
>> kthread: use N_MEMORY instead N_HIGH_MEMORY
>> init: use N_MEMORY instead N_HIGH_MEMORY
>> vmscan: use N_MEMORY instead N_HIGH_MEMORY
>> page_alloc: use N_MEMORY instead N_HIGH_MEMORY change the node_states
>> initialization
>> hotplug: update nodemasks management
>> numa: add CONFIG_MOVABLE_NODE for movable-dedicated node
>> memory_hotplug: allow online/offline memory to result movable node
>> page_alloc: add kernelcore_max_addr
>> mempolicy: fix is_valid_nodemask()
>>
>> Yasuaki Ishimatsu (4):
>> x86: get pg_data_t's memory from other node
>> x86: use memblock_set_current_limit() to set memblock.current_limit
>> memblock: limit memory address from memblock
>> memblock: compare current_limit with end variable at
>> memblock_find_in_range_node()
>>
>> Documentation/cgroups/cpusets.txt | 2 +-
>> Documentation/kernel-parameters.txt | 9 +
>> Documentation/memory-hotplug.txt | 19 ++-
>> arch/x86/kernel/setup.c | 4 +-
>> arch/x86/mm/init_64.c | 4 +-
>> arch/x86/mm/numa.c | 8 +-
>> drivers/base/memory.c | 27 ++--
>> drivers/base/node.c | 28 ++--
>> fs/proc/kcore.c | 2 +-
>> fs/proc/task_mmu.c | 4 +-
>> include/linux/cpuset.h | 2 +-
>> include/linux/memblock.h | 1 +
>> include/linux/memory.h | 1 +
>> include/linux/memory_hotplug.h | 13 ++-
>> include/linux/nodemask.h | 5 +
>> init/main.c | 2 +-
>> kernel/cpuset.c | 32 ++--
>> kernel/kthread.c | 2 +-
>> mm/Kconfig | 8 +
>> mm/hugetlb.c | 24 ++--
>> mm/memblock.c | 10 +-
>> mm/memcontrol.c | 18 +-
>> mm/memory_hotplug.c | 283 +++++++++++++++++++++++++++++++++--
>> mm/mempolicy.c | 48 ++++---
>> mm/migrate.c | 2 +-
>> mm/oom_kill.c | 2 +-
>> mm/page_alloc.c | 76 +++++++---
>> mm/page_cgroup.c | 2 +-
>> mm/vmscan.c | 4 +-
>> mm/vmstat.c | 4 +-
>> 30 files changed, 508 insertions(+), 138 deletions(-)
>>
>
>
> --
> 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/
>
prev parent reply other threads:[~2012-10-31 9:24 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-29 15:07 [V5 PATCH 00/26] mm, memory-hotplug: dynamic configure movable memory and introduce movable node Lai Jiangshan
2012-10-29 15:07 ` [V5 PATCH 01/26] mm, memory-hotplug: dynamic configure movable memory and portion memory Lai Jiangshan
2012-10-29 15:20 ` [V5 PATCH 02/26] memory_hotplug: handle empty zone when online_movable/online_kernel Lai Jiangshan
2012-10-29 15:20 ` Lai Jiangshan
2012-10-29 15:20 ` [V5 PATCH 03/26] memory_hotplug: ensure every online node has NORMAL memory Lai Jiangshan
2012-10-29 15:20 ` Lai Jiangshan
2012-10-29 15:20 ` [V5 PATCH 04/26] node: cleanup node_state_attr Lai Jiangshan
2012-10-29 15:20 ` [V5 PATCH 05/26] node_states: introduce N_MEMORY Lai Jiangshan
2012-10-29 20:46 ` David Rientjes
2012-10-31 7:03 ` Wen Congyang
2012-10-29 15:20 ` [V5 PATCH 06/26] cpuset: use N_MEMORY instead N_HIGH_MEMORY Lai Jiangshan
2012-10-29 15:20 ` [V5 PATCH 07/26] procfs: " Lai Jiangshan
[not found] ` <1351523301-20048-1-git-send-email-laijs-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2012-10-29 15:20 ` [V5 PATCH 08/26] memcontrol: " Lai Jiangshan
2012-10-29 15:20 ` Lai Jiangshan
2012-10-29 15:20 ` Lai Jiangshan
[not found] ` <1351524078-20363-7-git-send-email-laijs-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2012-10-29 16:22 ` Michal Hocko
2012-10-29 16:22 ` Michal Hocko
2012-10-29 16:22 ` Michal Hocko
[not found] ` <20121029162212.GE20757-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-10-29 20:40 ` David Rientjes
2012-10-29 20:40 ` David Rientjes
2012-10-29 20:40 ` David Rientjes
[not found] ` <alpine.DEB.2.00.1210291340100.18552-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
2012-10-29 20:58 ` Michal Hocko
2012-10-29 20:58 ` Michal Hocko
2012-10-29 20:58 ` Michal Hocko
[not found] ` <20121029205806.GB21640-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-10-29 21:08 ` David Rientjes
2012-10-29 21:08 ` David Rientjes
2012-10-29 21:08 ` David Rientjes
[not found] ` <alpine.DEB.2.00.1210291405100.18552-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
2012-10-29 21:34 ` Michal Hocko
2012-10-29 21:34 ` Michal Hocko
2012-10-29 21:34 ` Michal Hocko
2012-10-29 21:34 ` Michal Hocko
2012-10-29 16:22 ` Michal Hocko
2012-10-31 13:18 ` Michal Hocko
2012-10-31 13:18 ` Michal Hocko
2012-10-31 13:18 ` Michal Hocko
2012-10-31 13:18 ` Michal Hocko
2012-10-29 15:20 ` [V5 PATCH 09/26] oom: " Lai Jiangshan
2012-10-29 15:20 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 10/26] mm,migrate: " Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 11/26] mempolicy: " Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 12/26] hugetlb: " Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 13/26] vmstat: " Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 14/26] kthread: " Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 15/26] init: " Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 16/26] vmscan: " Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 17/26] page_alloc: use N_MEMORY instead N_HIGH_MEMORY change the node_states initialization Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 18/26] hotplug: update nodemasks management Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 19/26] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 20/26] memory_hotplug: allow online/offline memory to result movable node Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 21/26] page_alloc: add kernelcore_max_addr Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 22/26] x86: get pg_data_t's memory from other node Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 23/26] x86: use memblock_set_current_limit() to set memblock.current_limit Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 24/26] memblock: limit memory address from memblock Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 25/26] memblock: compare current_limit with end variable at memblock_find_in_range_node() Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-29 15:21 ` [V5 PATCH 26/26] mempolicy: fix is_valid_nodemask() Lai Jiangshan
2012-10-29 15:21 ` Lai Jiangshan
2012-10-30 9:50 ` [V5 PATCH 00/26] mm, memory-hotplug: dynamic configure movable memory and introduce movable node Yasuaki Ishimatsu
2012-10-31 9:30 ` Wen Congyang [this message]
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=5090EFA6.6030800@cn.fujitsu.com \
--to=wency@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=isimatu.yasuaki@jp.fujitsu.com \
--cc=jiang.liu@huawei.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=rientjes@google.com \
--cc=rusty@rustcorp.com.au \
--cc=x86@kernel.org \
--cc=yinghai@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 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.