[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20081106091431.0D2A.KOSAKI.MOTOHIRO@jp.fujitsu.com>
Date: Thu, 6 Nov 2008 09:16:58 +0900 (JST)
From: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
To: LKML <linux-kernel@...r.kernel.org>,
Christoph Lameter <cl@...ux-foundation.org>,
Mel Gorman <mel@....ul.ie>, linux-mm <linux-mm@...ck.org>
Cc: kosaki.motohiro@...fujitsu.com
Subject: [RFC][PATCH] mm: the page of MIGRATE_RESERVE don't insert into pcp
MIGRATE_RESERVE mean that the page is for emergency.
So it shouldn't be cached in pcp.
otherwise, the system have unnecessary memory starvation risk
because other cpu can't use this emergency pages.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
CC: Mel Gorman <mel@....ul.ie>
CC: Christoph Lameter <cl@...ux-foundation.org>
---
mm/page_alloc.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
Index: b/mm/page_alloc.c
===================================================================
--- a/mm/page_alloc.c 2008-11-06 06:01:15.000000000 +0900
+++ b/mm/page_alloc.c 2008-11-06 06:27:41.000000000 +0900
@@ -1002,6 +1002,7 @@ static void free_hot_cold_page(struct pa
struct zone *zone = page_zone(page);
struct per_cpu_pages *pcp;
unsigned long flags;
+ int migratetype = get_pageblock_migratetype(page);
if (PageAnon(page))
page->mapping = NULL;
@@ -1018,16 +1019,25 @@ static void free_hot_cold_page(struct pa
pcp = &zone_pcp(zone, get_cpu())->pcp;
local_irq_save(flags);
__count_vm_event(PGFREE);
+
+ set_page_private(page, migratetype);
+
+ /* the page for emergency shouldn't be cached */
+ if (migratetype == MIGRATE_RESERVE) {
+ free_one_page(zone, page, 0);
+ goto out;
+ }
if (cold)
list_add_tail(&page->lru, &pcp->list);
else
list_add(&page->lru, &pcp->list);
- set_page_private(page, get_pageblock_migratetype(page));
pcp->count++;
if (pcp->count >= pcp->high) {
free_pages_bulk(zone, pcp->batch, &pcp->list, 0);
pcp->count -= pcp->batch;
}
+
+out:
local_irq_restore(flags);
put_cpu();
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists