All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Add movablecore_map boot option
@ 2012-11-23 10:44 ` Tang Chen
  0 siblings, 0 replies; 170+ messages in thread
From: Tang Chen @ 2012-11-23 10:44 UTC (permalink / raw)
  To: hpa, akpm, rob, isimatu.yasuaki, tangchen, laijs, wency, linfeng,
	jiang.liu, yinghai, kosaki.motohiro, minchan.kim, mgorman,
	rientjes, rusty
  Cc: linux-kernel, linux-mm, linux-doc

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



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                  |   11 ++-
 include/linux/memblock.h            |    1 +
 include/linux/mm.h                  |   11 ++
 mm/memblock.c                       |   15 +++-
 mm/page_alloc.c                     |  216 ++++++++++++++++++++++++++++++++++-
 6 files changed, 263 insertions(+), 8 deletions(-)


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

end of thread, other threads:[~2012-12-19  9:18 UTC | newest]

Thread overview: 170+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-23 10:44 [PATCH v2 0/5] Add movablecore_map boot option Tang Chen
2012-11-23 10:44 ` Tang Chen
2012-11-23 10:44 ` [PATCH v2 1/5] x86: get pg_data_t's memory from other node Tang Chen
2012-11-23 10:44   ` Tang Chen
2012-11-24  1:19   ` Jiang Liu
2012-11-24  1:19     ` Jiang Liu
2012-11-26  1:19     ` Tang Chen
2012-11-26  1:19       ` Tang Chen
2012-12-02 15:11   ` Jiang Liu
2012-12-02 15:11     ` Jiang Liu
2012-11-23 10:44 ` [PATCH v2 2/5] page_alloc: add movable_memmap kernel parameter Tang Chen
2012-11-23 10:44   ` Tang Chen
2012-11-23 10:44 ` [PATCH v2 3/5] page_alloc: Introduce zone_movable_limit[] to keep movable limit for nodes Tang Chen
2012-11-23 10:44   ` Tang Chen
2012-12-05 15:46   ` Jiang Liu
2012-12-05 15:46     ` Jiang Liu
2012-12-06  1:20     ` Tang Chen
2012-12-06  1:20       ` Tang Chen
2012-11-23 10:44 ` [PATCH v2 4/5] page_alloc: Make movablecore_map has higher priority Tang Chen
2012-11-23 10:44   ` Tang Chen
2012-12-05 15:43   ` Jiang Liu
2012-12-05 15:43     ` Jiang Liu
2012-12-06  1:26     ` Tang Chen
2012-12-06  1:26       ` Tang Chen
2012-12-06  2:26       ` Jiang Liu
2012-12-06  2:26         ` Jiang Liu
2012-12-06  2:51         ` Jianguo Wu
2012-12-06  2:51           ` Jianguo Wu
2012-12-06  2:57           ` Tang Chen
2012-12-06  2:57             ` Tang Chen
2012-12-09  8:10         ` Tang Chen
2012-12-09  8:10           ` Tang Chen
2012-12-10  2:15           ` Jiang Liu
2012-12-10  2:15             ` Jiang Liu
2012-11-23 10:44 ` [PATCH v2 5/5] page_alloc: Bootmem limit with movablecore_map Tang Chen
2012-11-23 10:44   ` Tang Chen
2012-11-26 12:22   ` wujianguo
2012-11-26 12:22     ` wujianguo
2012-11-26 12:53     ` Tang Chen
2012-11-26 12:53       ` Tang Chen
2012-11-26 12:40   ` wujianguo
2012-11-26 12:40     ` wujianguo
2012-11-26 13:15     ` Tang Chen
2012-11-26 13:15       ` Tang Chen
2012-11-26 15:48       ` H. Peter Anvin
2012-11-26 15:48         ` H. Peter Anvin
2012-11-27  0:58         ` Jianguo Wu
2012-11-27  0:58           ` Jianguo Wu
2012-11-27  3:19           ` Wen Congyang
2012-11-27  3:19             ` Wen Congyang
2012-11-27  3:22             ` Jianguo Wu
2012-11-27  3:22               ` Jianguo Wu
2012-11-27  3:34               ` Wen Congyang
2012-11-27  3:34                 ` Wen Congyang
2012-11-27  1:12         ` Jiang Liu
2012-11-27  1:12           ` Jiang Liu
2012-11-27  1:20           ` H. Peter Anvin
2012-11-27  1:20             ` H. Peter Anvin
2012-11-27  3:15         ` Wen Congyang
2012-11-27  3:15           ` Wen Congyang
2012-11-27  5:31           ` H. Peter Anvin
2012-11-27  5:31             ` H. Peter Anvin
2012-12-06 17:28             ` Jiang Liu
2012-12-06 17:28               ` Jiang Liu
2012-12-06 17:41               ` H. Peter Anvin
2012-12-06 17:41                 ` H. Peter Anvin
2012-12-07  0:18                 ` Jiang Liu
2012-12-07  0:18                   ` Jiang Liu
2012-12-19  9:17     ` Tang Chen
2012-12-19  9:17       ` Tang Chen
2012-11-27  3:10 ` [PATCH v2 0/5] Add movablecore_map boot option wujianguo
2012-11-27  3:10   ` wujianguo
2012-11-27  5:43   ` Tang Chen
2012-11-27  5:43     ` Tang Chen
2012-11-27  6:20     ` H. Peter Anvin
2012-11-27  6:20       ` H. Peter Anvin
2012-11-27  6:47     ` Jianguo Wu
2012-11-27  6:47       ` Jianguo Wu
2012-11-28  3:47   ` Tang Chen
2012-11-28  3:47     ` Tang Chen
2012-11-28  4:01     ` Jiang Liu
2012-11-28  4:01       ` Jiang Liu
2012-11-28  5:21       ` Wen Congyang
2012-11-28  5:21         ` Wen Congyang
2012-11-28  5:17         ` Jiang Liu
2012-11-28  5:17           ` Jiang Liu
2012-11-28  4:53     ` Jianguo Wu
2012-11-28  4:53       ` Jianguo Wu
2012-11-27  8:00 ` Bob Liu
2012-11-27  8:00   ` Bob Liu
2012-11-27  8:29   ` Tang Chen
2012-11-27  8:29     ` Tang Chen
2012-11-27  8:49     ` H. Peter Anvin
2012-11-27  8:49       ` H. Peter Anvin
2012-11-27  9:47       ` Wen Congyang
2012-11-27  9:47         ` Wen Congyang
2012-11-27  9:53         ` H. Peter Anvin
2012-11-27  9:53           ` H. Peter Anvin
2012-11-27  9:59       ` Yasuaki Ishimatsu
2012-11-27  9:59         ` Yasuaki Ishimatsu
2012-11-27 12:09     ` Bob Liu
2012-11-27 12:09       ` Bob Liu
2012-11-27 12:49       ` Tang Chen
2012-11-27 12:49         ` Tang Chen
2012-11-28  3:24         ` Bob Liu
2012-11-28  3:24           ` Bob Liu
2012-11-28  4:08           ` Jiang Liu
2012-11-28  4:08             ` Jiang Liu
2012-11-28  6:16             ` Tang Chen
2012-11-28  6:16               ` Tang Chen
2012-11-28  7:03               ` Jiang Liu
2012-11-28  7:03                 ` Jiang Liu
2012-11-28  8:29             ` Wen Congyang
2012-11-28  8:29               ` Wen Congyang
2012-11-28  8:28               ` Jiang Liu
2012-11-28  8:28                 ` Jiang Liu
2012-11-28  8:38                 ` Wen Congyang
2012-11-28  8:38                   ` Wen Congyang
2012-11-29  0:43               ` Jaegeuk Hanse
2012-11-29  0:43                 ` Jaegeuk Hanse
2012-11-29  1:24                 ` Tang Chen
2012-11-29  1:24                   ` Tang Chen
2012-11-30  9:20             ` Lai Jiangshan
2012-11-30  9:20               ` Lai Jiangshan
2012-11-28  8:47 ` Jiang Liu
2012-11-28  8:47   ` Jiang Liu
2012-11-28 21:34   ` Luck, Tony
2012-11-28 21:34     ` Luck, Tony
2012-11-28 21:38     ` H. Peter Anvin
2012-11-28 21:38       ` H. Peter Anvin
2012-11-29 11:00       ` Mel Gorman
2012-11-29 11:00         ` Mel Gorman
2012-11-29 16:07         ` H. Peter Anvin
2012-11-29 16:07           ` H. Peter Anvin
2012-11-29 22:41           ` Luck, Tony
2012-11-29 22:41             ` Luck, Tony
2012-11-29 22:45             ` H. Peter Anvin
2012-11-29 22:45               ` H. Peter Anvin
2012-11-30  2:56         ` Jiang Liu
2012-11-30  2:56           ` Jiang Liu
2012-11-30  3:15           ` Yasuaki Ishimatsu
2012-11-30  3:15             ` Yasuaki Ishimatsu
2012-11-30 15:36             ` Jiang Liu
2012-11-30 15:36               ` Jiang Liu
2012-11-30  2:58         ` Luck, Tony
2012-11-30  2:58           ` Luck, Tony
2012-11-30  3:28           ` H. Peter Anvin
2012-11-30  3:28             ` H. Peter Anvin
2012-11-30 10:19           ` Glauber Costa
2012-11-30 10:19             ` Glauber Costa
2012-11-30 10:52           ` Mel Gorman
2012-11-30 10:52             ` Mel Gorman
2012-11-29 10:38     ` Yasuaki Ishimatsu
2012-11-29 10:38       ` Yasuaki Ishimatsu
2012-11-29 11:05       ` Mel Gorman
2012-11-29 11:05         ` Mel Gorman
2012-11-29 15:47       ` Jiang Liu
2012-11-29 15:47         ` Jiang Liu
2012-11-29 15:53       ` Jiang Liu
2012-11-29 15:53         ` Jiang Liu
2012-11-29  1:42   ` Jaegeuk Hanse
2012-11-29  1:42     ` Jaegeuk Hanse
2012-11-29  2:25     ` Jiang Liu
2012-11-29  2:25       ` Jiang Liu
2012-11-29  2:49       ` Wanpeng Li
2012-11-29  2:49       ` Wanpeng Li
2012-11-29  2:59         ` Jiang Liu
2012-11-29  2:59           ` Jiang Liu
2012-11-30 22:27       ` Toshi Kani
2012-11-30 22:27         ` Toshi Kani

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.