Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759068Ab1D1KfM (ORCPT ); Thu, 28 Apr 2011 06:35:12 -0400 Received: from cantor2.suse.de ([195.135.220.15]:34347 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751972Ab1D1KfK (ORCPT ); Thu, 28 Apr 2011 06:35:10 -0400 Date: Thu, 28 Apr 2011 11:35:05 +0100 From: Mel Gorman To: Minchan Kim Cc: Andrew Morton , linux-mm , LKML , Christoph Lameter , Johannes Weiner , KAMEZAWA Hiroyuki , KOSAKI Motohiro , Rik van Riel , Andrea Arcangeli Subject: Re: [RFC 3/8] vmscan: make isolate_lru_page with filter aware Message-ID: <20110428103505.GS4658@suse.de> References: <232562452317897b5acb1445803410d74233a923.1303833417.git.minchan.kim@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <232562452317897b5acb1445803410d74233a923.1303833417.git.minchan.kim@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2654 Lines: 74 On Wed, Apr 27, 2011 at 01:25:20AM +0900, Minchan Kim wrote: > In some __zone_reclaim case, we don't want to shrink mapped page. > Nonetheless, we have isolated mapped page and re-add it into > LRU's head. It's unnecessary CPU overhead and makes LRU churning. > > Of course, when we isolate the page, the page might be mapped but > when we try to migrate the page, the page would be not mapped. > So it could be migrated. But race is rare and although it happens, > it's no big deal. > > Cc: Christoph Lameter > Cc: KOSAKI Motohiro > Cc: Mel Gorman > Cc: Rik van Riel > Cc: Andrea Arcangeli > Signed-off-by: Minchan Kim > index 71d2da9..e8d6190 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -1147,7 +1147,8 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, > > static unsigned long isolate_pages_global(unsigned long nr, > struct list_head *dst, > - unsigned long *scanned, int order, > + unsigned long *scanned, > + struct scan_control *sc, > int mode, struct zone *z, > int active, int file) > { > @@ -1156,8 +1157,8 @@ static unsigned long isolate_pages_global(unsigned long nr, > lru += LRU_ACTIVE; > if (file) > lru += LRU_FILE; > - return isolate_lru_pages(nr, &z->lru[lru].list, dst, scanned, order, > - mode, file, 0, 0); > + return isolate_lru_pages(nr, &z->lru[lru].list, dst, scanned, sc->order, > + mode, file, 0, !sc->may_unmap); > } > Why not take may_writepage into account for dirty pages? > /* > @@ -1407,7 +1408,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct zone *zone, > > if (scanning_global_lru(sc)) { > nr_taken = isolate_pages_global(nr_to_scan, > - &page_list, &nr_scanned, sc->order, > + &page_list, &nr_scanned, sc, > sc->reclaim_mode & RECLAIM_MODE_LUMPYRECLAIM ? > ISOLATE_BOTH : ISOLATE_INACTIVE, > zone, 0, file); > @@ -1531,7 +1532,7 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone, > spin_lock_irq(&zone->lru_lock); > if (scanning_global_lru(sc)) { > nr_taken = isolate_pages_global(nr_pages, &l_hold, > - &pgscanned, sc->order, > + &pgscanned, sc, > ISOLATE_ACTIVE, zone, > 1, file); > zone->pages_scanned += pgscanned; > -- > 1.7.1 > -- Mel Gorman SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/