• Linus Torvalds's avatar
    Don't trigger congestion wait on dirty-but-not-writeout pages · b738d764
    Linus Torvalds authored
    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: default avatarFelipe Contreras <felipe.contreras@gmail.com>
    Pinpointed-by: default avatarHillf 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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b738d764
vmscan.c 110 KB