Thread (54 messages) 54 messages, 11 authors, 2011-05-20

Re: [PATCH] mm: vmscan: Correctly check if reclaimer should schedule during shrink_slab

From: Minchan Kim <hidden>
Date: 2011-05-19 00:03:45
Also in: linux-fsdevel, linux-mm, lkml

On Wed, May 18, 2011 at 1:15 AM, Mel Gorman [off-list ref] wrote:
It has been reported on some laptops that kswapd is consuming large
amounts of CPU and not being scheduled when SLUB is enabled during
large amounts of file copying. It is expected that this is due to
kswapd missing every cond_resched() point because;

shrink_page_list() calls cond_resched() if inactive pages were isolated
       which in turn may not happen if all_unreclaimable is set in
       shrink_zones(). If for whatver reason, all_unreclaimable is
       set on all zones, we can miss calling cond_resched().

balance_pgdat() only calls cond_resched if the zones are not
       balanced. For a high-order allocation that is balanced, it
       checks order-0 again. During that window, order-0 might have
       become unbalanced so it loops again for order-0 and returns
       that it was reclaiming for order-0 to kswapd(). It can then
       find that a caller has rewoken kswapd for a high-order and
       re-enters balance_pgdat() without ever calling cond_resched().

shrink_slab only calls cond_resched() if we are reclaiming slab
       pages. If there are a large number of direct reclaimers, the
       shrinker_rwsem can be contended and prevent kswapd calling
       cond_resched().

This patch modifies the shrink_slab() case. If the semaphore is
contended, the caller will still check cond_resched(). After each
successful call into a shrinker, the check for cond_resched() is
still necessary in case one shrinker call is particularly slow.

This patch replaces
mm-vmscan-if-kswapd-has-been-running-too-long-allow-it-to-sleep.patch
in -mm.

[mgorman@suse.de: Preserve call to cond_resched after each call into shrinker]
From: Minchan Kim <redacted>
Signed-off-by: Minchan Kim <redacted>
Signed-off-by: Mel Gorman <mgorman@suse.de>
-- 
Kind regards,
Minchan Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help