]> git.baikalelectronics.ru Git - kernel.git/commit
Don't trigger congestion wait on dirty-but-not-writeout pages
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 8 Jun 2014 21:17:00 +0000 (14:17 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 8 Jun 2014 21:17:00 +0000 (14:17 -0700)
commit958526367bee813114c1bd31adddf4852fea9e82
treea7e98864dfe0c8076a24cba75febbbdb0a52e9dc
parent70d97ef7b17845f1b3e7939d34bc522f0ed37fcf
Don't trigger congestion wait on dirty-but-not-writeout pages

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.

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>
mm/vmscan.c