• Mel Gorman's avatar
    vmscan: have kswapd sleep for a short interval and double check it should be asleep · f50de2d3
    Mel Gorman authored
    After kswapd balances all zones in a pgdat, it goes to sleep.  In the
    event of no IO congestion, kswapd can go to sleep very shortly after the
    high watermark was reached.  If there are a constant stream of allocations
    from parallel processes, it can mean that kswapd went to sleep too quickly
    and the high watermark is not being maintained for sufficient length time.
    
    This patch makes kswapd go to sleep as a two-stage process.  It first
    tries to sleep for HZ/10.  If it is woken up by another process or the
    high watermark is no longer met, it's considered a premature sleep and
    kswapd continues work.  Otherwise it goes fully to sleep.
    
    This adds more counters to distinguish between fast and slow breaches of
    watermarks.  A "fast" premature sleep is one where the low watermark was
    hit in a very short time after kswapd going to sleep.  A "slow" premature
    sleep indicates that the high watermark was breached after a very short
    interval.
    Signed-off-by: default avatarMel Gorman <mel@csn.ul.ie>
    Cc: Frans Pop <elendil@planet.nl>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f50de2d3
vmscan.c 82 KB