Using THP, programs can access memory faster, by having the kernel collapse small pages into large pages. The parameter max_ptes_none specifies how many extra small pages (that are not already mapped) can be allocated when collapsing a group of small pages into one large page. A larger value of max_ptes_none can cause the kernel to collapse more incomplete areas into THPs, speeding up memory access at the cost of increased memory use. A smaller value of max_ptes_none will reduce memory waste, at the expense of collapsing fewer areas into THPs. The problem was reported here: https://bugzilla.kernel.org/show_bug.cgi?id=93111 Signed-off-by: Ebru Akagunduz <ebru.akagunduz@xxxxxxxxx> Reviewed-by: Rik van Riel <riel@xxxxxxxxxx> --- mm/huge_memory.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index e08e37a..497fb5a 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -59,11 +59,10 @@ static DEFINE_MUTEX(khugepaged_mutex); static DEFINE_SPINLOCK(khugepaged_mm_lock); static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait); /* - * default collapse hugepages if there is at least one pte mapped like - * it would have happened if the vma was large enough during page - * fault. + * The default value should be a compromise between memory use and THP speedup. + * To collapse hugepages, unmapped ptes should not exceed 1/8 of HPAGE_PMD_NR. */ -static unsigned int khugepaged_max_ptes_none __read_mostly = HPAGE_PMD_NR-1; +static unsigned int khugepaged_max_ptes_none __read_mostly = HPAGE_PMD_NR/8; static int khugepaged(void *none); static int khugepaged_slab_init(void); -- 1.9.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>