Re: [PATCH v3 03/13] page_alloc, mem-hotplug: Improve movablecore to {en|dis}able using SRAT.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 24, 2013 at 05:29:12PM +0800, Tang Chen wrote:
>The Hot-Pluggable Fired in SRAT specified which memory ranges are hotpluggable.
>We will arrange hotpluggable memory as ZONE_MOVABLE for users who want to use
>memory hotplug functionality. But this will cause NUMA performance decreased
>because kernel cannot use ZONE_MOVABLE.
>
>So we improve movablecore boot option to allow those who want to use memory
>hotplug functionality to enable using SRAT info to arrange movable memory.
>
>Users can specify "movablecore=acpi" in kernel commandline to enable this
>functionality.
>
>For those who don't use memory hotplug or who don't want to lose their NUMA
>performance, just don't specify anything. The kernel will work as before.
>

Reviewed-by: Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx>

>Suggested-by: Kamezawa Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>
>Signed-off-by: Tang Chen <tangchen@xxxxxxxxxxxxxx>
>---
> include/linux/memory_hotplug.h |    3 +++
> mm/page_alloc.c                |   13 +++++++++++++
> 2 files changed, 16 insertions(+), 0 deletions(-)
>
>diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
>index b6a3be7..18fe2a3 100644
>--- a/include/linux/memory_hotplug.h
>+++ b/include/linux/memory_hotplug.h
>@@ -33,6 +33,9 @@ enum {
> 	ONLINE_MOVABLE,
> };
>
>+/* Enable/disable SRAT in movablecore boot option */
>+extern bool movablecore_enable_srat;
>+
> /*
>  * pgdat resizing functions
>  */
>diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>index f368db4..b9ea143 100644
>--- a/mm/page_alloc.c
>+++ b/mm/page_alloc.c
>@@ -208,6 +208,8 @@ static unsigned long __initdata required_kernelcore;
> static unsigned long __initdata required_movablecore;
> static unsigned long __meminitdata zone_movable_pfn[MAX_NUMNODES];
>
>+bool __initdata movablecore_enable_srat = false;
>+
> /* movable_zone is the "real" zone pages in ZONE_MOVABLE are taken from */
> int movable_zone;
> EXPORT_SYMBOL(movable_zone);
>@@ -5025,6 +5027,12 @@ void __init free_area_init_nodes(unsigned long *max_zone_pfn)
> 	}
> }
>
>+static void __init cmdline_movablecore_srat(char *p)
>+{
>+	if (p && !strcmp(p, "acpi"))
>+		movablecore_enable_srat = true;
>+}
>+
> static int __init cmdline_parse_core(char *p, unsigned long *core)
> {
> 	unsigned long long coremem;
>@@ -5055,6 +5063,11 @@ static int __init cmdline_parse_kernelcore(char *p)
>  */
> static int __init cmdline_parse_movablecore(char *p)
> {
>+	cmdline_movablecore_srat(p);
>+
>+	if (movablecore_enable_srat)
>+		return 0;
>+
> 	return cmdline_parse_core(p, &required_movablecore);
> }
>
>-- 
>1.7.1
>
>--
>To unsubscribe, send a message with 'unsubscribe linux-mm' in
>the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
>see: http://www.linux-mm.org/ .
>Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]