summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-06-23 09:03:38 (GMT)
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 14:42:51 (GMT)
commit442c9137de8d769053e81d325709dca72f0b5e44 (patch)
tree200e5ace0310755d88dd1c7597cc0bb540264fe1
parent6c5240ae7f48c83fcaa8e24fa63e7eb09aba5651 (diff)
downloadlinux-442c9137de8d769053e81d325709dca72f0b5e44.tar.xz
[PATCH] More page migration: do not inc/dec rss counters
If we install a migration entry then the rss not really decreases since the page is just moved somewhere else. We can save ourselves the work of decrementing and later incrementing which will just eventually cause cacheline bouncing. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--mm/migrate.c1
-rw-r--r--mm/rmap.c2
2 files changed, 1 insertions, 2 deletions
diff --git a/mm/migrate.c b/mm/migrate.c
index 8f91463..96b9546 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -164,7 +164,6 @@ static void remove_migration_pte(struct vm_area_struct *vma, unsigned long addr,
if (!is_migration_entry(entry) || migration_entry_to_page(entry) != old)
goto out;
- inc_mm_counter(mm, anon_rss);
get_page(new);
pte = pte_mkold(mk_pte(new, vma->vm_page_prot));
if (is_write_migration_entry(entry))
diff --git a/mm/rmap.c b/mm/rmap.c
index a53a10b..05d6d73 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -595,6 +595,7 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
list_add(&mm->mmlist, &init_mm.mmlist);
spin_unlock(&mmlist_lock);
}
+ dec_mm_counter(mm, anon_rss);
} else {
/*
* Store the pfn of the page in a special migration
@@ -606,7 +607,6 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
}
set_pte_at(mm, address, pte, swp_entry_to_pte(entry));
BUG_ON(pte_file(*pte));
- dec_mm_counter(mm, anon_rss);
} else
dec_mm_counter(mm, file_rss);