diff options
author | Mel Gorman <mgorman@suse.de> | 2015-06-30 17:57:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-30 22:44:56 -0400 |
commit | 3a80a7fa7989fbb6aa56bb6ad31811b62cf99e60 (patch) | |
tree | cfcd9fb093f891b4218618d63347cfa63be7e38f /mm/Kconfig | |
parent | 75a592a47129dcfc1aec40e7d3cdf239a767d441 (diff) |
mm: meminit: initialise a subset of struct pages if CONFIG_DEFERRED_STRUCT_PAGE_INIT is set
This patch initalises all low memory struct pages and 2G of the highest
zone on each node during memory initialisation if
CONFIG_DEFERRED_STRUCT_PAGE_INIT is set. That config option cannot be set
but will be available in a later patch. Parallel initialisation of struct
page depends on some features from memory hotplug and it is necessary to
alter alter section annotations.
Signed-off-by: Mel Gorman <mgorman@suse.de>
Tested-by: Nate Zimmer <nzimmer@sgi.com>
Tested-by: Waiman Long <waiman.long@hp.com>
Tested-by: Daniel J Blueman <daniel@numascale.com>
Acked-by: Pekka Enberg <penberg@kernel.org>
Cc: Robin Holt <robinmholt@gmail.com>
Cc: Nate Zimmer <nzimmer@sgi.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Waiman Long <waiman.long@hp.com>
Cc: Scott Norton <scott.norton@hp.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/Kconfig')
-rw-r--r-- | mm/Kconfig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/mm/Kconfig b/mm/Kconfig index c180af880ed5..e79de2bd12cd 100644 --- a/mm/Kconfig +++ b/mm/Kconfig | |||
@@ -636,3 +636,21 @@ config MAX_STACK_SIZE_MB | |||
636 | changed to a smaller value in which case that is used. | 636 | changed to a smaller value in which case that is used. |
637 | 637 | ||
638 | A sane initial value is 80 MB. | 638 | A sane initial value is 80 MB. |
639 | |||
640 | # For architectures that support deferred memory initialisation | ||
641 | config ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT | ||
642 | bool | ||
643 | |||
644 | config DEFERRED_STRUCT_PAGE_INIT | ||
645 | bool "Defer initialisation of struct pages to kswapd" | ||
646 | default n | ||
647 | depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT | ||
648 | depends on MEMORY_HOTPLUG | ||
649 | help | ||
650 | Ordinarily all struct pages are initialised during early boot in a | ||
651 | single thread. On very large machines this can take a considerable | ||
652 | amount of time. If this option is set, large machines will bring up | ||
653 | a subset of memmap at boot and then initialise the rest in parallel | ||
654 | when kswapd starts. This has a potential performance impact on | ||
655 | processes running early in the lifetime of the systemm until kswapd | ||
656 | finishes the initialisation. | ||