[PATCH] More page migration: do not inc/dec rss counters
authorChristoph Lameter <clameter@sgi.com>
Fri, 23 Jun 2006 09:03:38 +0000 (02:03 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 23 Jun 2006 14:42:51 +0000 (07:42 -0700)
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>
mm/migrate.c
mm/rmap.c

index 8f91463eab4e2906018d816f2364f3270eb12131..96b9546e69e0f23cd99f03c6d06a67dfeadeda23 100644 (file)
@@ -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))
index a53a10b93ecffd53072ae7193df6338500313dac..05d6d73a692dc7d42588922ef5fdad13b0b26769 100644 (file)
--- 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);