summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-06-23 13:03:38 +0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 18:42:51 +0400
commit442c9137de8d769053e81d325709dca72f0b5e44 (patch)
tree200e5ace0310755d88dd1c7597cc0bb540264fe1 /mm
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>
Diffstat (limited to 'mm')
-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 8f91463eab4e..96b9546e69e0 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 a53a10b93ecf..05d6d73a692d 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);