lkml.org 
[lkml]   [2018]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH v1 13/13] mm: splice local lists onto the front of the LRU
    On Wed, Jan 31, 2018 at 06:04:13PM -0500, daniel.m.jordan@oracle.com wrote:
    > Now that release_pages is scaling better with concurrent removals from
    > the LRU, the performance results (included below) showed increased
    > contention on lru_lock in the add-to-LRU path.
    >
    > To alleviate some of this contention, do more work outside the LRU lock.
    > Prepare a local list of pages to be spliced onto the front of the LRU,
    > including setting PageLRU in each page, before taking lru_lock. Since
    > other threads use this page flag in certain checks outside lru_lock,
    > ensure each page's LRU links have been properly initialized before
    > setting the flag, and use memory barriers accordingly.
    >
    > Performance Results
    >
    > This is a will-it-scale run of page_fault1 using 4 different kernels.
    >
    > kernel kern #
    >
    > 4.15-rc2 1
    > large-zone-batch 2
    > lru-lock-base 3
    > lru-lock-splice 4
    >
    > Each kernel builds on the last. The first is a baseline, the second
    > makes zone->lock more scalable by increasing an order-0 per-cpu
    > pagelist's 'batch' and 'high' values to 310 and 1860 respectively

    Since the purpose of the patchset is to optimize lru_lock, you may
    consider adjusting pcp->high to be >= 32768(page_fault1's test size is
    128M = 32768 pages). That should eliminate zone->lock contention
    entirely.

    > (courtesy of Aaron Lu's patch), the third scales lru_lock without
    > splicing pages (the previous patch in this series), and the fourth adds
    > page splicing (this patch).
    >
    > N tasks mmap, fault, and munmap anonymous pages in a loop until the test
    > time has elapsed.

    \
     
     \ /
      Last update: 2018-02-02 06:22    [W:4.027 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site