aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Arcangeli <aarcange@redhat.com>2011-01-13 18:47:07 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 20:32:45 -0500
commit13ece886d99cd668483113f7238e419d5331af26 (patch)
tree44a1c65870ba4463316f943f52d898bb3763ab81
parentce83d2174ea9c3d72d5821cf3ebc974e36391bf7 (diff)
thp: transparent hugepage config choice
Allow to choose between the always|madvise default for page faults and khugepaged at config time. madvise guarantees zero risk of higher memory footprint for applications (applications using madvise(MADV_HUGEPAGE) won't risk to use any more memory by backing their virtual regions with hugepages). Initially set the default to N and don't depend on EMBEDDED. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/Kconfig27
-rw-r--r--mm/huge_memory.c5
2 files changed, 30 insertions, 2 deletions
diff --git a/mm/Kconfig b/mm/Kconfig
index d774f77538ce..3e81687263b5 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -303,9 +303,8 @@ config NOMMU_INITIAL_TRIM_EXCESS
303 See Documentation/nommu-mmap.txt for more information. 303 See Documentation/nommu-mmap.txt for more information.
304 304
305config TRANSPARENT_HUGEPAGE 305config TRANSPARENT_HUGEPAGE
306 bool "Transparent Hugepage Support" if EMBEDDED 306 bool "Transparent Hugepage Support"
307 depends on X86 && MMU 307 depends on X86 && MMU
308 default y
309 help 308 help
310 Transparent Hugepages allows the kernel to use huge pages and 309 Transparent Hugepages allows the kernel to use huge pages and
311 huge tlb transparently to the applications whenever possible. 310 huge tlb transparently to the applications whenever possible.
@@ -316,6 +315,30 @@ config TRANSPARENT_HUGEPAGE
316 315
317 If memory constrained on embedded, you may want to say N. 316 If memory constrained on embedded, you may want to say N.
318 317
318choice
319 prompt "Transparent Hugepage Support sysfs defaults"
320 depends on TRANSPARENT_HUGEPAGE
321 default TRANSPARENT_HUGEPAGE_ALWAYS
322 help
323 Selects the sysfs defaults for Transparent Hugepage Support.
324
325 config TRANSPARENT_HUGEPAGE_ALWAYS
326 bool "always"
327 help
328 Enabling Transparent Hugepage always, can increase the
329 memory footprint of applications without a guaranteed
330 benefit but it will work automatically for all applications.
331
332 config TRANSPARENT_HUGEPAGE_MADVISE
333 bool "madvise"
334 help
335 Enabling Transparent Hugepage madvise, will only provide a
336 performance improvement benefit to the applications using
337 madvise(MADV_HUGEPAGE) but it won't risk to increase the
338 memory footprint of applications without a guaranteed
339 benefit.
340endchoice
341
319# 342#
320# UP and nommu archs use km based percpu allocator 343# UP and nommu archs use km based percpu allocator
321# 344#
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index bce6e12140e2..30c3cec82023 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -27,7 +27,12 @@
27 * allocations. 27 * allocations.
28 */ 28 */
29unsigned long transparent_hugepage_flags __read_mostly = 29unsigned long transparent_hugepage_flags __read_mostly =
30#ifdef CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS
30 (1<<TRANSPARENT_HUGEPAGE_FLAG)| 31 (1<<TRANSPARENT_HUGEPAGE_FLAG)|
32#endif
33#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
34 (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
35#endif
31 (1<<TRANSPARENT_HUGEPAGE_DEFRAG_FLAG)| 36 (1<<TRANSPARENT_HUGEPAGE_DEFRAG_FLAG)|
32 (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG); 37 (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG);
33 38