From: Simon Jeons <simon.jeons@gmail.com>
To: Tang Chen <tangchen@cn.fujitsu.com>
Cc: jiang.liu@huawei.com, wujianguo@huawei.com, hpa@zytor.com,
akpm@linux-foundation.org, wency@cn.fujitsu.com,
laijs@cn.fujitsu.com, linfeng@cn.fujitsu.com, yinghai@kernel.org,
isimatu.yasuaki@jp.fujitsu.com, rob@landley.net,
kosaki.motohiro@jp.fujitsu.com, minchan.kim@gmail.com,
mgorman@suse.de, rientjes@google.com, rusty@rustcorp.com.au,
lliubbo@gmail.com, jaegeuk.hanse@gmail.com, tony.luck@intel.com,
glommer@parallels.com, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH v3 0/5] Add movablecore_map boot option
Date: Tue, 11 Dec 2012 05:33:20 -0600 [thread overview]
Message-ID: <1355225600.1919.3.camel@kernel.cn.ibm.com> (raw)
In-Reply-To: <1355193207-21797-1-git-send-email-tangchen@cn.fujitsu.com>
On Tue, 2012-12-11 at 10:33 +0800, Tang Chen wrote:
> [What we are doing]
> This patchset provide a boot option for user to specify ZONE_MOVABLE memory
> map for each node in the system.
>
> movablecore_map=nn[KMG]@ss[KMG]
>
> This option make sure memory range from ss to ss+nn is movable memory.
>
>
> [Why we do this]
> If we hot remove a memroy, the memory cannot have kernel memory,
> because Linux cannot migrate kernel memory currently. Therefore,
> we have to guarantee that the hot removed memory has only movable
> memoroy.
>
> Linux has two boot options, kernelcore= and movablecore=, for
> creating movable memory. These boot options can specify the amount
> of memory use as kernel or movable memory. Using them, we can
> create ZONE_MOVABLE which has only movable memory.
>
> But it does not fulfill a requirement of memory hot remove, because
> even if we specify the boot options, movable memory is distributed
> in each node evenly. So when we want to hot remove memory which
> memory range is 0x80000000-0c0000000, we have no way to specify
> the memory as movable memory.
>
> So we proposed a new feature which specifies memory range to use as
> movable memory.
>
>
> [Ways to do this]
> There may be 2 ways to specify movable memory.
> 1. use firmware information
> 2. use boot option
>
> 1. use firmware information
> According to ACPI spec 5.0, SRAT table has memory affinity structure
> and the structure has Hot Pluggable Filed. See "5.2.16.2 Memory
> Affinity Structure". If we use the information, we might be able to
> specify movable memory by firmware. For example, if Hot Pluggable
> Filed is enabled, Linux sets the memory as movable memory.
>
> 2. use boot option
> This is our proposal. New boot option can specify memory range to use
> as movable memory.
>
>
> [How we do this]
> We chose second way, because if we use first way, users cannot change
> memory range to use as movable memory easily. We think if we create
> movable memory, performance regression may occur by NUMA. In this case,
> user can turn off the feature easily if we prepare the boot option.
> And if we prepare the boot optino, the user can select which memory
> to use as movable memory easily.
>
>
> [How to use]
> Specify the following boot option:
> movablecore_map=nn[KMG]@ss[KMG]
>
> That means physical address range from ss to ss+nn will be allocated as
> ZONE_MOVABLE.
>
> And the following points should be considered.
>
> 1) If the range is involved in a single node, then from ss to the end of
> the node will be ZONE_MOVABLE.
> 2) If the range covers two or more nodes, then from ss to the end of
> the node will be ZONE_MOVABLE, and all the other nodes will only
> have ZONE_MOVABLE.
Could you explain which part of your codes implement point 1 and point
2?
> 3) If no range is in the node, then the node will have no ZONE_MOVABLE
> unless kernelcore or movablecore is specified.
> 4) This option could be specified at most MAX_NUMNODES times.
> 5) If kernelcore or movablecore is also specified, movablecore_map will have
> higher priority to be satisfied.
> 6) This option has no conflict with memmap option.
>
>
> Change log:
>
> v2 -> v3:
> 1) Use memblock_alloc_try_nid() instead of memblock_alloc_nid() to allocate
> memory twice if a whole node is ZONE_MOVABLE.
> 2) Add DMA, DMA32 addresses check, make sure ZONE_MOVABLE won't use these addresses.
> Suggested by Wu Jianguo <wujianguo@huawei.com>
> 3) Add lowmem addresses check, when the system has highmem, make sure ZONE_MOVABLE
> won't use lowmem. Suggested by Liu Jiang <jiang.liu@huawei.com>
> 4) Fix misuse of pfns in movablecore_map.map[] as physical addresses.
>
> Tang Chen (4):
> page_alloc: add movable_memmap kernel parameter
> page_alloc: Introduce zone_movable_limit[] to keep movable limit for
> nodes
> page_alloc: Make movablecore_map has higher priority
> page_alloc: Bootmem limit with movablecore_map
>
> Yasuaki Ishimatsu (1):
> x86: get pg_data_t's memory from other node
>
> Documentation/kernel-parameters.txt | 17 +++
> arch/x86/mm/numa.c | 5 +-
> include/linux/memblock.h | 1 +
> include/linux/mm.h | 11 ++
> mm/memblock.c | 18 +++-
> mm/page_alloc.c | 238 ++++++++++++++++++++++++++++++++++-
> 6 files changed, 282 insertions(+), 8 deletions(-)
>
> --
> 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>
--
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>
prev parent reply other threads:[~2012-12-11 11:33 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-11 2:33 [PATCH v3 0/5] Add movablecore_map boot option Tang Chen
2012-12-11 2:33 ` [PATCH v3 1/5] x86: get pg_data_t's memory from other node Tang Chen
2012-12-11 2:33 ` [PATCH v3 2/5] page_alloc: add movable_memmap kernel parameter Tang Chen
2012-12-11 2:33 ` [PATCH v3 3/5] page_alloc: Introduce zone_movable_limit[] to keep movable limit for nodes Tang Chen
2012-12-11 3:07 ` Jianguo Wu
2012-12-11 3:32 ` Tang Chen
2012-12-11 11:28 ` Simon Jeons
2012-12-12 0:49 ` Jiang Liu
2012-12-12 9:09 ` Tang Chen
2012-12-12 9:29 ` Simon Jeons
2012-12-12 10:32 ` Tang Chen
2012-12-13 0:28 ` Simon Jeons
2012-12-13 1:48 ` Tang Chen
2012-12-13 3:09 ` Simon Jeons
2012-12-11 12:24 ` Simon Jeons
2012-12-11 12:41 ` Jianguo Wu
2012-12-11 13:20 ` Simon Jeons
2012-12-12 1:57 ` Jianguo Wu
2012-12-12 2:03 ` Simon Jeons
2012-12-12 1:58 ` Lin Feng
2012-12-11 4:55 ` [PATCH v3 3/5][RESEND] " Tang Chen
2012-12-11 2:33 ` [PATCH v3 4/5] page_alloc: Make movablecore_map has higher priority Tang Chen
2012-12-11 4:56 ` [PATCH v3 4/5][RESEND] " Tang Chen
2012-12-12 1:33 ` Simon Jeons
2012-12-12 9:34 ` Tang Chen
2012-12-13 1:56 ` Simon Jeons
2012-12-11 2:33 ` [PATCH v3 5/5] page_alloc: Bootmem limit with movablecore_map Tang Chen
2012-12-11 11:33 ` Simon Jeons [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=1355225600.1919.3.camel@kernel.cn.ibm.com \
--to=simon.jeons@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=glommer@parallels.com \
--cc=hpa@zytor.com \
--cc=isimatu.yasuaki@jp.fujitsu.com \
--cc=jaegeuk.hanse@gmail.com \
--cc=jiang.liu@huawei.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linfeng@cn.fujitsu.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lliubbo@gmail.com \
--cc=mgorman@suse.de \
--cc=minchan.kim@gmail.com \
--cc=rientjes@google.com \
--cc=rob@landley.net \
--cc=rusty@rustcorp.com.au \
--cc=tangchen@cn.fujitsu.com \
--cc=tony.luck@intel.com \
--cc=wency@cn.fujitsu.com \
--cc=wujianguo@huawei.com \
--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 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).