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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(2011/05/18 1:15), Mel Gorman 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@xxxxxxx: Preserve call to cond_resched after each call into shrinker]
From: Minchan Kim<minchan.kim@xxxxxxxxx>
Signed-off-by: Mel Gorman<mgorman@xxxxxxx>

Looks good to me.
	Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]