[Acked]Re: [PATCH 2/2] mm: vmscan: correct use of pgdat_balanced in sleeping_prematurely

Brad Figg brad.figg at canonical.com
Fri Jun 17 10:16:06 UTC 2011


On 06/17/2011 11:06 AM, Colin King wrote:
> From: Johannes Weiner<hannes at cmpxchg.org>
>
> There are a few reports of people experiencing hangs when copying large
> amounts of data with kswapd using a large amount of CPU which appear to be
> due to recent reclaim changes.  SLUB using high orders is the trigger but
> not the root cause as SLUB has been using high orders for a while.  The
> root cause was bugs introduced into reclaim which are addressed by the
> following two patches.
>
> Patch 1 corrects logic introduced by commit 1741c877 ("mm: kswapd:
>          keep kswapd awake for high-order allocations until a percentage of
>          the node is balanced") to allow kswapd to go to sleep when
>          balanced for high orders.
>
> Patch 2 notes that it is possible for kswapd to miss every
>          cond_resched() and updates shrink_slab() so it'll at least reach
>          that scheduling point.
>
> Chris Wood reports that these two patches in isolation are sufficient to
> prevent the system hanging.  AFAIK, they should also resolve similar hangs
> experienced by James Bottomley.
>
> This patch:
>
> Johannes Weiner poined out that the logic in commit 1741c877 ("mm: kswapd:
> keep kswapd awake for high-order allocations until a percentage of the
> node is balanced") is backwards.  Instead of allowing kswapd to go to
> sleep when balancing for high order allocations, it keeps it kswapd
> running uselessly.
>
> Signed-off-by: Mel Gorman<mgorman at suse.de>
> Reviewed-by: Rik van Riel<riel at redhat.com>
> Signed-off-by: Johannes Weiner<hannes at cmpxchg.org>
> Reviewed-by: Wu Fengguang<fengguang.wu at intel.com>
> Cc: James Bottomley<James.Bottomley at HansenPartnership.com>
> Tested-by: Colin King<colin.king at canonical.com>
> Cc: Raghavendra D Prabhu<raghu.prabhu13 at gmail.com>
> Cc: Jan Kara<jack at suse.cz>
> Cc: Chris Mason<chris.mason at oracle.com>
> Cc: Christoph Lameter<cl at linux.com>
> Cc: Pekka Enberg<penberg at kernel.org>
> Cc: Rik van Riel<riel at redhat.com>
> Reviewed-by: Minchan Kim<minchan.kim at gmail.com>
> Reviewed-by: Wu Fengguang<fengguang.wu at intel.com>
> Cc:<stable at kernel.org>		[2.6.38+]
> Signed-off-by: Andrew Morton<akpm at linux-foundation.org>
> Signed-off-by: Linus Torvalds<torvalds at linux-foundation.org>
> ---
>   mm/vmscan.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 648aab8..a74bf72 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -2291,7 +2291,7 @@ static bool sleeping_prematurely(pg_data_t *pgdat, int order, long remaining,
>   	 * must be balanced
>   	 */
>   	if (order)
> -		return pgdat_balanced(pgdat, balanced, classzone_idx);
> +		return !pgdat_balanced(pgdat, balanced, classzone_idx);
>   	else
>   		return !all_zones_ok;
>   }

Acked-by: Brad Figg <brad.figg at canonical.com>

-- 
Brad Figg brad.figg at canonical.com http://www.canonical.com




More information about the kernel-team mailing list