From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754879AbYK1LIU (ORCPT ); Fri, 28 Nov 2008 06:08:20 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752314AbYK1LIK (ORCPT ); Fri, 28 Nov 2008 06:08:10 -0500 Received: from mx2.redhat.com ([66.187.237.31]:55055 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752019AbYK1LIJ (ORCPT ); Fri, 28 Nov 2008 06:08:09 -0500 Date: Fri, 28 Nov 2008 06:08:03 -0500 From: Rik van Riel To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, KOSAKI Motohiro , akpm@linux-foundation.org Subject: [PATCH] vmscan: skip freeing memory from zones with lots free Message-ID: <20081128060803.73cd59bd@bree.surriel.com> Organization: Red Hat, Inc. Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Skip freeing memory from zones that already have lots of free memory. If one memory zone has harder to free memory, we want to avoid freeing excessive amounts of memory from other zones, if only because pageout IO from the other zones can slow down page freeing from the problem zone. This is similar to the check already done by kswapd in balance_pgdat(). Signed-off-by: Rik van Riel --- Kosaki-san, this should address point (3) from your list. mm/vmscan.c | 3 +++ 1 file changed, 3 insertions(+) Index: linux-2.6.28-rc5/mm/vmscan.c =================================================================== --- linux-2.6.28-rc5.orig/mm/vmscan.c 2008-11-28 05:53:56.000000000 -0500 +++ linux-2.6.28-rc5/mm/vmscan.c 2008-11-28 06:05:29.000000000 -0500 @@ -1510,6 +1510,9 @@ static unsigned long shrink_zones(int pr if (zone_is_all_unreclaimable(zone) && priority != DEF_PRIORITY) continue; /* Let kswapd poll it */ + if (zone_watermark_ok(zone, sc->order, + 4*zone->pages_high, high_zoneidx, 0)) + continue; /* Lots free already */ sc->all_unreclaimable = 0; } else { /* From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Fri, 28 Nov 2008 06:08:03 -0500 From: Rik van Riel Subject: [PATCH] vmscan: skip freeing memory from zones with lots free Message-ID: <20081128060803.73cd59bd@bree.surriel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org Return-Path: To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, KOSAKI Motohiro , akpm@linux-foundation.org List-ID: Skip freeing memory from zones that already have lots of free memory. If one memory zone has harder to free memory, we want to avoid freeing excessive amounts of memory from other zones, if only because pageout IO from the other zones can slow down page freeing from the problem zone. This is similar to the check already done by kswapd in balance_pgdat(). Signed-off-by: Rik van Riel --- Kosaki-san, this should address point (3) from your list. mm/vmscan.c | 3 +++ 1 file changed, 3 insertions(+) Index: linux-2.6.28-rc5/mm/vmscan.c =================================================================== --- linux-2.6.28-rc5.orig/mm/vmscan.c 2008-11-28 05:53:56.000000000 -0500 +++ linux-2.6.28-rc5/mm/vmscan.c 2008-11-28 06:05:29.000000000 -0500 @@ -1510,6 +1510,9 @@ static unsigned long shrink_zones(int pr if (zone_is_all_unreclaimable(zone) && priority != DEF_PRIORITY) continue; /* Let kswapd poll it */ + if (zone_watermark_ok(zone, sc->order, + 4*zone->pages_high, high_zoneidx, 0)) + continue; /* Lots free already */ sc->all_unreclaimable = 0; } else { /* -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org