summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Lameter2006-06-23 11:03:38 +0200
committerLinus Torvalds2006-06-23 16:42:51 +0200
commit442c9137de8d769053e81d325709dca72f0b5e44 (patch)
tree200e5ace0310755d88dd1c7597cc0bb540264fe1
parent[PATCH] Swapless page migration: modify core logic (diff)
downloadkernel-qcow2-linux-442c9137de8d769053e81d325709dca72f0b5e44.tar.gz
kernel-qcow2-linux-442c9137de8d769053e81d325709dca72f0b5e44.tar.xz
kernel-qcow2-linux-442c9137de8d769053e81d325709dca72f0b5e44.zip
[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 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);