Don't hard-code 512M as the threshold in kernel, make it configruable, and set 512M by default. And print info when THP is disabled automatically on small systems. V2: Add more description in help messages, correct some typos, print the mini threshold too. Cc: dave@xxxxxxxxxxxxxxxxxx Signed-off-by: WANG Cong <amwang@xxxxxxxxxx> --- mm/Kconfig | 20 ++++++++++++++++++++ mm/huge_memory.c | 7 ++++++- 2 files changed, 26 insertions(+), 1 deletions(-) diff --git a/mm/Kconfig b/mm/Kconfig index 8ca47a5..f1b3175f 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -340,6 +340,26 @@ choice benefit. endchoice +config TRANSPARENT_HUGEPAGE_THRESHOLD + depends on TRANSPARENT_HUGEPAGE + int "The minimal threshold of enabling Transparent Hugepage" + range 512 8192 + default "512" + help + The threshold of enabling Transparent Huagepage automatically, + in Mbytes, below this value Transparent Hugepage will be disabled + by default during boot. You can still enable it via /sys after + boot. + + Transparent hugepages are created by moving other pages out of + the way to create large, contiguous swaths of free memory. + However, some memory on a system can not be easily moved. It is + likely on small systems that this unmovable memory will occupy a + large portion of total memory, which makes even attempting to + create transparent hugepages very expensive. + + If you are unsure, set this to the smallest possible value. + # # UP and nommu archs use km based percpu allocator # diff --git a/mm/huge_memory.c b/mm/huge_memory.c index e4a4f2b..126c96b 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -546,8 +546,13 @@ static int __init hugepage_init(void) * where the extra memory used could hurt more than TLB overhead * is likely to save. The admin can still enable it through /sys. */ - if (totalram_pages < (512 << (20 - PAGE_SHIFT))) + if (totalram_pages < (CONFIG_TRANSPARENT_HUGEPAGE_THRESHOLD + << (20 - PAGE_SHIFT))) { + printk(KERN_INFO "THP: disabled automatically" + "with less than %dMB of RAM\n", + CONFIG_TRANSPARENT_HUGEPAGE_THRESHOLD); transparent_hugepage_flags = 0; + } start_khugepaged(); -- 1.7.4.4 -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>