• Alexander Duyck's avatar
    mm/page_reporting: add budget limit on how many pages can be reported per pass · 43b76f29
    Alexander Duyck authored
    In order to keep ourselves from reporting pages that are just going to be
    reused again in the case of heavy churn we can put a limit on how many
    total pages we will process per pass.  Doing this will allow the worker
    thread to go into idle much more quickly so that we avoid competing with
    other threads that might be allocating or freeing pages.
    
    The logic added here will limit the worker thread to no more than one
    sixteenth of the total free pages in a given area per list.  Once that
    limit is reached it will update the state so that at the end of the pass
    we will reschedule the worker to try again in 2 seconds when the memory
    churn has hopefully settled down.
    
    Again this optimization doesn't show much of a benefit in the standard
    case as the memory churn is minmal.  However with page allocator shuffling
    enabled the gain is quite noticeable.  Below are the results with a THP
    enabled version of the will-it-scale page_fault1 test showing the
    improvement in iterations for 16 processes or threads.
    
    Without:
    tasks   processes       processes_idle  threads         threads_idle
    16      8283274.75      0.17            5594261.00      38.15
    
    With:
    tasks   processes       processes_idle  threads         threads_idle
    16      8767010.50      0.21            5791312.75      36.98
    Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Luiz Capitulino <lcapitulino@redhat.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Nitesh Narayan Lal <nitesh@redhat.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Pankaj Gupta <pagupta@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Wei Wang <wei.w.wang@intel.com>
    Cc: Yang Zhang <yang.zhang.wz@gmail.com>
    Cc: wei qi <weiqi4@huawei.com>
    Link: http://lkml.kernel.org/r/20200211224719.29318.72113.stgit@localhost.localdomainSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    43b76f29
page_reporting.c 9.95 KB