From: Johannes Weiner <hannes@cmpxchg.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@suse.de>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
kernel-team@fb.com
Subject: [PATCH 0/5] mm: vmscan: fix kswapd writeback regression
Date: Mon, 23 Jan 2017 13:16:36 -0500 [thread overview]
Message-ID: <20170123181641.23938-1-hannes@cmpxchg.org> (raw)
We noticed a regression on multiple hadoop workloads when moving from
3.10 to 4.0 and 4.6, which involves kswapd getting tangled up in page
writeout, causing direct reclaim herds that also don't make progress.
I tracked it down to the thrash avoidance efforts after 3.10 that make
the kernel better at keeping use-once cache and use-many cache sorted
on the inactive and active list, with more aggressive protection of
the active list as long as there is inactive cache. Unfortunately, our
workload's use-once cache is mostly from streaming writes. Waiting for
writes to avoid potential reloads in the future is not a good tradeoff.
These patches do the following:
1. Wake the flushers when kswapd sees a lump of dirty pages. It's
possible to be below the dirty background limit and still have
cache velocity push them through the LRU. So start a-flushin'.
2. Let kswapd only write pages that have been rotated twice. This
makes sure we really tried to get all the clean pages on the
inactive list before resorting to horrible LRU-order writeback.
3. Move rotating dirty pages off the inactive list. Instead of
churning or waiting on page writeback, we'll go after clean active
cache. This might lead to thrashing, but in this state memory
demand outstrips IO speed anyway, and reads are faster than writes.
More details in the individual changelogs.
include/linux/mm_inline.h | 7 ++++
include/linux/mmzone.h | 2 --
include/linux/writeback.h | 2 +-
include/trace/events/writeback.h | 2 +-
mm/swap.c | 9 ++---
mm/vmscan.c | 68 +++++++++++++++-----------------------
6 files changed, 41 insertions(+), 49 deletions(-)
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2017-01-23 18:17 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-23 18:16 Johannes Weiner [this message]
2017-01-23 18:16 ` [PATCH 1/5] mm: vmscan: scan dirty pages even in laptop mode Johannes Weiner
2017-01-26 1:27 ` Minchan Kim
2017-01-26 9:52 ` Mel Gorman
2017-01-26 13:13 ` Michal Hocko
2017-01-23 18:16 ` [PATCH 2/5] mm: vmscan: kick flushers when we encounter dirty pages on the LRU Johannes Weiner
2017-01-26 1:35 ` Minchan Kim
2017-01-26 9:57 ` Mel Gorman
2017-01-26 17:47 ` Johannes Weiner
2017-01-26 18:47 ` Mel Gorman
2017-01-26 13:16 ` Michal Hocko
2017-01-23 18:16 ` [PATCH 3/5] mm: vmscan: remove old flusher wakeup from direct reclaim path Johannes Weiner
2017-01-26 1:38 ` Minchan Kim
2017-01-26 10:05 ` Mel Gorman
2017-01-26 18:50 ` Johannes Weiner
2017-01-26 20:45 ` Mel Gorman
2017-01-27 12:01 ` Michal Hocko
2017-01-27 14:27 ` Mel Gorman
2017-01-26 13:21 ` Michal Hocko
2017-01-23 18:16 ` [PATCH 4/5] mm: vmscan: only write dirty pages that the scanner has seen twice Johannes Weiner
2017-01-26 1:42 ` Minchan Kim
2017-01-26 10:08 ` Mel Gorman
2017-01-26 13:29 ` Michal Hocko
2017-01-23 18:16 ` [PATCH 5/5] mm: vmscan: move dirty pages out of the way until they're flushed Johannes Weiner
2017-01-26 1:47 ` Minchan Kim
2017-01-26 10:19 ` Mel Gorman
2017-01-26 20:07 ` Johannes Weiner
2017-01-26 20:58 ` Mel Gorman
2017-01-26 13:52 ` Michal Hocko
2017-01-26 5:44 ` [PATCH 0/5] mm: vmscan: fix kswapd writeback regression Hillf Danton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170123181641.23938-1-hannes@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox