linux-sg2042/include
Johannes Weiner c55e8d035b mm: vmscan: move dirty pages out of the way until they're flushed
We noticed a performance regression when moving hadoop workloads from
3.10 kernels to 4.0 and 4.6.  This is accompanied by increased pageout
activity initiated by kswapd as well as frequent bursts of allocation
stalls and direct reclaim scans.  Even lowering the dirty ratios to the
equivalent of less than 1% of memory would not eliminate the issue,
suggesting that dirty pages concentrate where the scanner is looking.

This can be traced back to recent efforts of thrash avoidance.  Where
3.10 would not detect refaulting pages and continuously supply clean
cache to the inactive list, a thrashing workload on 4.0+ will detect and
activate refaulting pages right away, distilling used-once pages on the
inactive list much more effectively.  This is by design, and it makes
sense for clean cache.  But for the most part our workload's cache
faults are refaults and its use-once cache is from streaming writes.  We
end up with most of the inactive list dirty, and we don't go after the
active cache as long as we have use-once pages around.

But waiting for writes to avoid reclaiming clean cache that *might*
refault is a bad trade-off.  Even if the refaults happen, reads are
faster than writes.  Before getting bogged down on writeback, reclaim
should first look at *all* cache in the system, even active cache.

To accomplish this, activate pages that are dirty or under writeback
when they reach the end of the inactive LRU.  The pages are marked for
immediate reclaim, meaning they'll get moved back to the inactive LRU
tail as soon as they're written back and become reclaimable.  But in the
meantime, by reducing the inactive list to only immediately reclaimable
pages, we allow the scanner to deactivate and refill the inactive list
with clean cache from the active list tail to guarantee forward
progress.

[hannes@cmpxchg.org: update comment]
  Link: http://lkml.kernel.org/r/20170202191957.22872-8-hannes@cmpxchg.org
Link: http://lkml.kernel.org/r/20170123181641.23938-6-hannes@cmpxchg.org
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Minchan Kim <minchan@kernel.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2017-02-24 17:46:54 -08:00
..
acpi Merge branches 'acpi-bus', 'acpi-sleep' and 'acpi-processor' 2017-02-20 14:28:03 +01:00
asm-generic Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-02-20 13:23:30 -08:00
clocksource
crypto crypto: algapi - make crypto_xor() and crypto_inc() alignment agnostic 2017-02-11 17:52:28 +08:00
drm Less anger inducing pull request for 4.11 2017-02-23 18:58:18 -08:00
dt-bindings ARM: SoC driver updates 2017-02-23 15:57:04 -08:00
keys
kvm KVM: arm/arm64: Emulate the EL1 phys timer registers 2017-02-08 15:13:37 +00:00
linux mm: vmscan: move dirty pages out of the way until they're flushed 2017-02-24 17:46:54 -08:00
math-emu
media [media] v4l2-subdev.h: fix v4l2_subdev_pad_config documentation 2017-02-03 12:00:37 -02:00
memory
misc
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-02-22 10:15:09 -08:00
pcmcia
ras
rdma Mellanox specific updates for 4.11 merge window 2017-02-23 11:27:49 -08:00
rxrpc
scsi SCSI misc on 20170220 2017-02-21 11:51:42 -08:00
soc ARC updates for 4.11 rc1 2017-02-22 10:33:53 -08:00
sound ASoC: Updates for v4.11 2017-02-20 21:43:40 +01:00
target First set of updates for 4.11 kernel merge window 2017-02-23 08:27:57 -08:00
trace mm: vmscan: kick flushers when we encounter dirty pages on the LRU 2017-02-24 17:46:54 -08:00
uapi userfaultfd: non-cooperative: rename *EVENT_MADVDONTNEED to *EVENT_REMOVE 2017-02-24 17:46:54 -08:00
video drm/exynos/decon5433: signal vblank only on odd fields 2017-02-07 13:52:52 +09:00
xen xen/privcmd: Add IOCTL_PRIVCMD_DM_OP 2017-02-14 15:13:43 -05:00
Kbuild