• W
    mm: Allow architectures to request 'old' entries when prefaulting · 46bdb427
    Will Deacon 提交于
    Commit 5c0a85fa ("mm: make faultaround produce old ptes") changed
    the "faultaround" behaviour to initialise prefaulted PTEs as 'old',
    since this avoids vmscan wrongly assuming that they are hot, despite
    having never been explicitly accessed by userspace. The change has been
    shown to benefit numerous arm64 micro-architectures (with hardware
    access flag) running Android, where both application launch latency and
    direct reclaim time are significantly reduced (by 10%+ and ~80%
    respectively).
    
    Unfortunately, commit 315d09bf ("Revert "mm: make faultaround
    produce old ptes"") reverted the change due to it being identified as
    the cause of a ~6% regression in unixbench on x86. Experiments on a
    variety of recent arm64 micro-architectures indicate that unixbench is
    not affected by the original commit, which appears to yield a 0-1%
    performance improvement.
    
    Since one size does not fit all for the initial state of prefaulted
    PTEs, introduce arch_wants_old_prefaulted_pte(), which allows an
    architecture to opt-in to 'old' prefaulted PTEs at runtime based on
    whatever criteria it may have.
    
    Cc: Jan Kara <jack@suse.cz>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Reported-by: NVinayak Menon <vinmenon@codeaurora.org>
    Signed-off-by: NWill Deacon <will@kernel.org>
    46bdb427
mm.h 100.5 KB