The patch titled Subject: shmem: avoid huge pages for small files has been added to the -mm tree. Its filename is shmem-avoid-huge-pages-for-small-files.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/shmem-avoid-huge-pages-for-small-files.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/shmem-avoid-huge-pages-for-small-files.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> Subject: shmem: avoid huge pages for small files Huge pages are detrimental for small file: they causes noticible overhead on both allocation performance and memory footprint. This patch aimed to address this issue by avoiding huge pages until file grown to size of huge page. This would cover most of the cases where huge pages causes regressions in performance. Couple notes: - if shmem_enabled is set to 'force', the limit is ignored. We still want to generate as many pages as possible for functional testing. - the limit doesn't affect khugepaged behaviour: it still can collapse pages based on its settings; Link: http://lkml.kernel.org/r/20161021224629.tnwuvruhblkg22qj@xxxxxxxxxxxxxxxxxx Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> Cc: Hugh Dickins <hughd@xxxxxxxxxx> Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> Cc: Dave Chinner <david@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- Documentation/vm/transhuge.txt | 3 +++ mm/shmem.c | 5 +++++ 2 files changed, 8 insertions(+) diff -puN Documentation/vm/transhuge.txt~shmem-avoid-huge-pages-for-small-files Documentation/vm/transhuge.txt --- a/Documentation/vm/transhuge.txt~shmem-avoid-huge-pages-for-small-files +++ a/Documentation/vm/transhuge.txt @@ -238,6 +238,9 @@ values: - "force": Force the huge option on for all - very useful for testing; +To avoid overhead for small files, we don't allocate huge pages for a file +until it grows to size of huge pages. + == Need of application restart == The transparent_hugepage/enabled values and tmpfs mount option only affect diff -puN mm/shmem.c~shmem-avoid-huge-pages-for-small-files mm/shmem.c --- a/mm/shmem.c~shmem-avoid-huge-pages-for-small-files +++ a/mm/shmem.c @@ -1692,6 +1692,11 @@ repeat: goto alloc_huge; /* TODO: implement fadvise() hints */ goto alloc_nohuge; + case SHMEM_HUGE_ALWAYS: + i_size = i_size_read(inode); + if (index < HPAGE_PMD_NR && i_size < HPAGE_PMD_SIZE) + goto alloc_nohuge; + break; } alloc_huge: _ Patches currently in -mm which might be from kirill.shutemov@xxxxxxxxxxxxxxx are shmem-avoid-huge-pages-for-small-files.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html