lkml.org 
[lkml]   [2016]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/3] mm: support bigger cache workingsets and protect against writes
    Date
    Hi,

    this is a follow-up to http://www.spinics.net/lists/linux-mm/msg101739.html
    where Andres reported his database workingset being pushed out by the
    minimum size enforcement of the inactive file list - currently 50% of cache
    - as well as repeatedly written file pages that are never actually read.

    Two changes fell out of the discussions. The first change observes that
    pages that are only ever written don't benefit from caching beyond what the
    writeback cache does for partial page writes, and so we shouldn't promote
    them to the active file list where they compete with pages whose cached data
    is actually accessed repeatedly. This change comes in two patches - one for
    in-cache write accesses and one for refaults triggered by writes, neither of
    which should promote a cache page.

    Second, with the refault detection we don't need to set 50% of the cache
    aside for used-once cache anymore since we can detect frequently used pages
    even when they are evicted between accesses. We can allow the active list to
    be bigger and thus protect a bigger workingset that isn't challenged by
    streamers. Depending on the access patterns, this can increase major faults
    during workingset transitions for better performance during stable phases.

    Andres, I tried reproducing your postgres scenario, but I could never get
    the WAL to interfere even with wal_log = hot_standby mode. It's a 8G
    machine, I set shared_buffers = 2GB, ran pgbench -i -s 290, and then -c 32
    -j 32 -M prepared -t 150000. Any input on how to trigger the thrashing you
    observed would be appreciated. But it would be great if you could test these
    patches on your known-problematic setup as well.

    Thanks!

    include/linux/memcontrol.h | 25 -----------
    mm/filemap.c | 8 +++-
    mm/page_alloc.c | 44 ------------------
    mm/vmscan.c | 104 +++++++++++++++++--------------------------
    4 files changed, 48 insertions(+), 133 deletions(-)

    \
     
     \ /
      Last update: 2016-04-04 19:21    [W:5.785 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site