浏览代码

[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>
Christoph Lameter 19 年之前
父节点
当前提交
442c9137de
共有 2 个文件被更改,包括 1 次插入2 次删除
  1. 0 1
      mm/migrate.c
  2. 1 1
      mm/rmap.c

+ 0 - 1
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)
 	if (!is_migration_entry(entry) || migration_entry_to_page(entry) != old)
 		goto out;
 		goto out;
 
 
-	inc_mm_counter(mm, anon_rss);
 	get_page(new);
 	get_page(new);
 	pte = pte_mkold(mk_pte(new, vma->vm_page_prot));
 	pte = pte_mkold(mk_pte(new, vma->vm_page_prot));
 	if (is_write_migration_entry(entry))
 	if (is_write_migration_entry(entry))

+ 1 - 1
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);
 					list_add(&mm->mmlist, &init_mm.mmlist);
 				spin_unlock(&mmlist_lock);
 				spin_unlock(&mmlist_lock);
 			}
 			}
+			dec_mm_counter(mm, anon_rss);
 		} else {
 		} else {
 			/*
 			/*
 			 * Store the pfn of the page in a special migration
 			 * 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));
 		set_pte_at(mm, address, pte, swp_entry_to_pte(entry));
 		BUG_ON(pte_file(*pte));
 		BUG_ON(pte_file(*pte));
-		dec_mm_counter(mm, anon_rss);
 	} else
 	} else
 		dec_mm_counter(mm, file_rss);
 		dec_mm_counter(mm, file_rss);