Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755955Ab1FGOjM (ORCPT ); Tue, 7 Jun 2011 10:39:12 -0400 Received: from mail-px0-f179.google.com ([209.85.212.179]:62519 "EHLO mail-px0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755910Ab1FGOjJ (ORCPT ); Tue, 7 Jun 2011 10:39:09 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=UtvAfn2c3WBHRNeseWF0oy6n3LCtFoRWglO+o23Mmf6J5LWrs41lj2bHGfgDDHteY+ okkH8qJM2ej8Ik7txzx2C8K/ymYqUmdGpn34sFi3fSLOcEH8zGvuvHJX4bcPtAfgqUOY BzkazfEKx1ijS0B9eGsE2dhwi7MjHXE019YKU= From: Minchan Kim To: Andrew Morton Cc: linux-mm , LKML , KOSAKI Motohiro , Mel Gorman , Andrea Arcangeli , Rik van Riel , Johannes Weiner , KAMEZAWA Hiroyuki , Minchan Kim Subject: [PATCH v3 04/10] compaction: make isolate_lru_page with filter aware Date: Tue, 7 Jun 2011 23:38:17 +0900 Message-Id: <10ad16e14fdbe47ac36f7e55ae72ed59ae73ed0c.1307455422.git.minchan.kim@gmail.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2046 Lines: 56 In async mode, compaction doesn't migrate dirty or writeback pages. So, it's meaningless to pick the page and re-add it to lru list. Of course, when we isolate the page in compaction, the page might be dirty or writeback but when we try to migrate the page, the page would be not dirty, writeback. So it could be migrated. But it's very unlikely as isolate and migration cycle is much faster than writeout. So, this patch helps cpu and prevent unnecessary LRU churning. Cc: Andrea Arcangeli Reviewed-by: KAMEZAWA Hiroyuki Reviewed-by: KOSAKI Motohiro Acked-by: Johannes Weiner Acked-by: Mel Gorman Acked-by: Rik van Riel Signed-off-by: Minchan Kim --- mm/compaction.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/compaction.c b/mm/compaction.c index f0d75e9..8079346 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -243,6 +243,7 @@ static unsigned long isolate_migratepages(struct zone *zone, unsigned long last_pageblock_nr = 0, pageblock_nr; unsigned long nr_scanned = 0, nr_isolated = 0; struct list_head *migratelist = &cc->migratepages; + enum ISOLATE_MODE mode = ISOLATE_ACTIVE|ISOLATE_INACTIVE; /* Do not scan outside zone boundaries */ low_pfn = max(cc->migrate_pfn, zone->zone_start_pfn); @@ -326,9 +327,11 @@ static unsigned long isolate_migratepages(struct zone *zone, continue; } + if (!cc->sync) + mode |= ISOLATE_CLEAN; + /* Try isolate the page */ - if (__isolate_lru_page(page, - ISOLATE_ACTIVE|ISOLATE_INACTIVE, 0) != 0) + if (__isolate_lru_page(page, mode, 0) != 0) continue; VM_BUG_ON(PageTransCompound(page)); -- 1.7.0.4 -- 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/