• Usama Arif's avatar
    mm: split underused THPs · dafff3f4
    Usama Arif authored
    This is an attempt to mitigate the issue of running out of memory when THP
    is always enabled.  During runtime whenever a THP is being faulted in
    (__do_huge_pmd_anonymous_page) or collapsed by khugepaged
    (collapse_huge_page), the THP is added to _deferred_list.  Whenever memory
    reclaim happens in linux, the kernel runs the deferred_split shrinker
    which goes through the _deferred_list.
    
    If the folio was partially mapped, the shrinker attempts to split it.  If
    the folio is not partially mapped, the shrinker checks if the THP was
    underused, i.e.  how many of the base 4K pages of the entire THP were
    zero-filled.  If this number goes above a certain threshold (decided by
    /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none), the
    shrinker will attempt to split that THP.  Then at remap time, the pages
    that were zero-filled are mapped to the shared zeropage, hence saving
    memory.
    
    Link: https://lkml.kernel.org/r/20240830100438.3623486-6-usamaarif642@gmail.comSigned-off-by: default avatarUsama Arif <usamaarif642@gmail.com>
    Suggested-by: default avatarRik van Riel <riel@surriel.com>
    Co-authored-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Cc: Alexander Zhu <alexlzhu@fb.com>
    Cc: Barry Song <baohua@kernel.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Domenico Cerasuolo <cerasuolodomenico@gmail.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Kairui Song <ryncsn@gmail.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Nico Pache <npache@redhat.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Shakeel Butt <shakeel.butt@linux.dev>
    Cc: Shuang Zhai <zhais@google.com>
    Cc: Yu Zhao <yuzhao@google.com>
    Cc: Shuang Zhai <szhai2@cs.rochester.edu>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    dafff3f4
huge_memory.c 111 KB