Commit 13ece886d99cd668483113f7238e419d5331af26
Committed by
Linus Torvalds
1 parent
ce83d2174e
Exists in
master
and in
20 other branches
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>
Showing 2 changed files with 30 additions and 2 deletions Side-by-side Diff
mm/Kconfig
... | ... | @@ -303,9 +303,8 @@ |
303 | 303 | See Documentation/nommu-mmap.txt for more information. |
304 | 304 | |
305 | 305 | config TRANSPARENT_HUGEPAGE |
306 | - bool "Transparent Hugepage Support" if EMBEDDED | |
306 | + bool "Transparent Hugepage Support" | |
307 | 307 | depends on X86 && MMU |
308 | - default y | |
309 | 308 | help |
310 | 309 | Transparent Hugepages allows the kernel to use huge pages and |
311 | 310 | huge tlb transparently to the applications whenever possible. |
... | ... | @@ -315,6 +314,30 @@ |
315 | 314 | up the pagetable walking. |
316 | 315 | |
317 | 316 | If memory constrained on embedded, you may want to say N. |
317 | + | |
318 | +choice | |
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. | |
340 | +endchoice | |
318 | 341 | |
319 | 342 | # |
320 | 343 | # UP and nommu archs use km based percpu allocator |
mm/huge_memory.c
... | ... | @@ -27,7 +27,12 @@ |
27 | 27 | * allocations. |
28 | 28 | */ |
29 | 29 | unsigned long transparent_hugepage_flags __read_mostly = |
30 | +#ifdef CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS | |
30 | 31 | (1<<TRANSPARENT_HUGEPAGE_FLAG)| |
32 | +#endif | |
33 | +#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE | |
34 | + (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)| | |
35 | +#endif | |
31 | 36 | (1<<TRANSPARENT_HUGEPAGE_DEFRAG_FLAG)| |
32 | 37 | (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG); |
33 | 38 |