]> git.hungrycats.org Git - linux/commit
Don't trigger congestion wait on dirty-but-not-writeout pages
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 21 Jul 2014 15:54:11 +0000 (17:54 +0200)
committerJiri Slaby <jslaby@suse.cz>
Tue, 22 Jul 2014 09:10:36 +0000 (11:10 +0200)
commite43bbc2c2b44d8f0bd0b7f65d6fd50ef738c57aa
treedd56a765f72b1565aac80049e06b8b47c7f4f163
parent0b8e8118dd2c9440bb7a2da1a19e15e324d3c09b
Don't trigger congestion wait on dirty-but-not-writeout pages

commit b738d764652dc5aab1c8939f637112981fce9e0e upstream.

shrink_inactive_list() used to wait 0.1s to avoid congestion when all
the pages that were isolated from the inactive list were dirty but not
under active writeback.  That makes no real sense, and apparently causes
major interactivity issues under some loads since 3.11.

The ostensible reason for it was to wait for kswapd to start writing
pages, but that seems questionable as well, since the congestion wait
code seems to trigger for kswapd itself as well.  Also, the logic behind
delaying anything when we haven't actually started writeback is not
clear - it only delays actually starting that writeback.

We'll still trigger the congestion waiting if

 (a) the process is kswapd, and we hit pages flagged for immediate
     reclaim

 (b) the process is not kswapd, and the zone backing dev writeback is
     actually congested.

This probably needs to be revisited, but as it is this fixes a reported
regression.

[mhocko@suse.cz: backport to 3.12 stable tree]
Fixes: e2be15f6c3ee ('mm: vmscan: stall page reclaim and writeback pages based on dirty/writepage pages encountered')
Reported-by: Felipe Contreras <felipe.contreras@gmail.com>
Pinpointed-by: Hillf Danton <dhillf@gmail.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
mm/vmscan.c