linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: Andi Kleen <ak@muc.de>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	Andrew Morton <akpm@osdl.org>,
	torvalds@osdl.org, hugh@veritas.com, linux-mm@kvack.org,
	linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org,
	benh@kernel.crashing.org
Subject: page fault scalability patch V16 [2/4]: mm counter macros
Date: Fri, 28 Jan 2005 12:36:56 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.58.0501281236160.19266@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0501281233560.19266@schroedinger.engr.sgi.com>

This patch extracts all the interesting pieces for handling rss and
anon_rss into definitions in include/linux/sched.h. All rss operations
are performed through the following three macros:

get_mm_counter(mm, member)		-> Obtain the value of a counter
set_mm_counter(mm, member, value)	-> Set the value of a counter
update_mm_counter(mm, member, value)	-> Add a value to a counter

The simple definitions provided in this patch should result in no change to
to the generated code.

With this patch it becomes easier to add new counters and it is possible
to redefine the method of counter handling (f.e. the page fault scalability
patches may want to use atomic operations or split rss).

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.10/include/linux/sched.h
===================================================================
--- linux-2.6.10.orig/include/linux/sched.h	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/include/linux/sched.h	2005-01-28 11:02:00.000000000 -0800
@@ -203,6 +203,10 @@ arch_get_unmapped_area_topdown(struct fi
 extern void arch_unmap_area(struct vm_area_struct *area);
 extern void arch_unmap_area_topdown(struct vm_area_struct *area);

+#define set_mm_counter(mm, member, value) (mm)->member = (value)
+#define get_mm_counter(mm, member) ((mm)->member)
+#define update_mm_counter(mm, member, value) (mm)->member += (value)
+#define MM_COUNTER_T unsigned long

 struct mm_struct {
 	struct vm_area_struct * mmap;		/* list of VMAs */
@@ -219,7 +223,7 @@ struct mm_struct {
 	atomic_t mm_count;			/* How many references to "struct mm_struct" (users count as 1) */
 	int map_count;				/* number of VMAs */
 	struct rw_semaphore mmap_sem;
-	spinlock_t page_table_lock;		/* Protects page tables, mm->rss, mm->anon_rss */
+	spinlock_t page_table_lock;		/* Protects page tables and some counters */

 	struct list_head mmlist;		/* List of maybe swapped mm's.  These are globally strung
 						 * together off init_mm.mmlist, and are protected
@@ -229,9 +233,13 @@ struct mm_struct {
 	unsigned long start_code, end_code, start_data, end_data;
 	unsigned long start_brk, brk, start_stack;
 	unsigned long arg_start, arg_end, env_start, env_end;
-	unsigned long rss, anon_rss, total_vm, locked_vm, shared_vm;
+	unsigned long total_vm, locked_vm, shared_vm;
 	unsigned long exec_vm, stack_vm, reserved_vm, def_flags, nr_ptes;

+	/* Special counters protected by the page_table_lock */
+	MM_COUNTER_T rss;
+	MM_COUNTER_T anon_rss;
+
 	unsigned long saved_auxv[42]; /* for /proc/PID/auxv */

 	unsigned dumpable:1;
Index: linux-2.6.10/mm/memory.c
===================================================================
--- linux-2.6.10.orig/mm/memory.c	2005-01-28 11:01:58.000000000 -0800
+++ linux-2.6.10/mm/memory.c	2005-01-28 11:02:00.000000000 -0800
@@ -324,9 +324,9 @@ copy_one_pte(struct mm_struct *dst_mm,
 		pte = pte_mkclean(pte);
 	pte = pte_mkold(pte);
 	get_page(page);
-	dst_mm->rss++;
+	update_mm_counter(dst_mm, rss, 1);
 	if (PageAnon(page))
-		dst_mm->anon_rss++;
+		update_mm_counter(dst_mm, anon_rss, 1);
 	set_pte(dst_pte, pte);
 	page_dup_rmap(page);
 }
@@ -528,7 +528,7 @@ static void zap_pte_range(struct mmu_gat
 			if (pte_dirty(pte))
 				set_page_dirty(page);
 			if (PageAnon(page))
-				tlb->mm->anon_rss--;
+				update_mm_counter(tlb->mm, anon_rss, -1);
 			else if (pte_young(pte))
 				mark_page_accessed(page);
 			tlb->freed++;
@@ -1345,13 +1345,14 @@ static int do_wp_page(struct mm_struct *
 	spin_lock(&mm->page_table_lock);
 	page_table = pte_offset_map(pmd, address);
 	if (likely(pte_same(*page_table, pte))) {
-		if (PageAnon(old_page))
-			mm->anon_rss--;
+		if (PageAnon(old_page))
+			update_mm_counter(mm, anon_rss, -1);
 		if (PageReserved(old_page)) {
-			++mm->rss;
+			update_mm_counter(mm, rss, 1);
 			acct_update_integrals();
 			update_mem_hiwater();
 		} else
+
 			page_remove_rmap(old_page);
 		break_cow(vma, new_page, address, page_table);
 		lru_cache_add_active(new_page);
@@ -1755,7 +1756,7 @@ static int do_swap_page(struct mm_struct
 	if (vm_swap_full())
 		remove_exclusive_swap_page(page);

-	mm->rss++;
+	update_mm_counter(mm, rss, 1);
 	acct_update_integrals();
 	update_mem_hiwater();

@@ -1823,7 +1824,7 @@ do_anonymous_page(struct mm_struct *mm,
 			spin_unlock(&mm->page_table_lock);
 			goto out;
 		}
-		mm->rss++;
+		update_mm_counter(mm, rss, 1);
 		acct_update_integrals();
 		update_mem_hiwater();
 		entry = maybe_mkwrite(pte_mkdirty(mk_pte(page,
@@ -1941,7 +1942,7 @@ retry:
 	/* Only go through if we didn't race with anybody else... */
 	if (pte_none(*page_table)) {
 		if (!PageReserved(new_page))
-			++mm->rss;
+			update_mm_counter(mm, rss, 1);
 		acct_update_integrals();
 		update_mem_hiwater();

@@ -2272,8 +2273,10 @@ void update_mem_hiwater(void)
 	struct task_struct *tsk = current;

 	if (tsk->mm) {
-		if (tsk->mm->hiwater_rss < tsk->mm->rss)
-			tsk->mm->hiwater_rss = tsk->mm->rss;
+		unsigned long rss = get_mm_counter(tsk->mm, rss);
+
+		if (tsk->mm->hiwater_rss < rss)
+			tsk->mm->hiwater_rss = rss;
 		if (tsk->mm->hiwater_vm < tsk->mm->total_vm)
 			tsk->mm->hiwater_vm = tsk->mm->total_vm;
 	}
Index: linux-2.6.10/mm/rmap.c
===================================================================
--- linux-2.6.10.orig/mm/rmap.c	2005-01-28 11:01:58.000000000 -0800
+++ linux-2.6.10/mm/rmap.c	2005-01-28 11:02:00.000000000 -0800
@@ -258,7 +258,7 @@ static int page_referenced_one(struct pa
 	pte_t *pte;
 	int referenced = 0;

-	if (!mm->rss)
+	if (!get_mm_counter(mm, rss))
 		goto out;
 	address = vma_address(page, vma);
 	if (address == -EFAULT)
@@ -437,7 +437,7 @@ void page_add_anon_rmap(struct page *pag
 	BUG_ON(PageReserved(page));
 	BUG_ON(!anon_vma);

-	vma->vm_mm->anon_rss++;
+	update_mm_counter(vma->vm_mm, anon_rss, 1);

 	anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON;
 	index = (address - vma->vm_start) >> PAGE_SHIFT;
@@ -510,7 +510,7 @@ static int try_to_unmap_one(struct page
 	pte_t pteval;
 	int ret = SWAP_AGAIN;

-	if (!mm->rss)
+	if (!get_mm_counter(mm, rss))
 		goto out;
 	address = vma_address(page, vma);
 	if (address == -EFAULT)
@@ -591,14 +591,14 @@ static int try_to_unmap_one(struct page
 		}
 		pteval = ptep_xchg_flush(vma, address, pte, swp_entry_to_pte(entry));
 		BUG_ON(pte_file(*pte));
-		mm->anon_rss--;
+		update_mm_counter(mm, anon_rss, -1);
 	} else
 		pteval = ptep_clear_flush(vma, address, pte);

 	/* Move the dirty bit to the physical page now that the pte is gone. */
 	if (pte_dirty(pteval))
 		set_page_dirty(page);
-	mm->rss--;
+	update_mm_counter(mm, rss, -1);
 	acct_update_integrals();
 	page_remove_rmap(page);
 	page_cache_release(page);
@@ -705,7 +705,7 @@ static void try_to_unmap_cluster(unsigne
 		page_remove_rmap(page);
 		page_cache_release(page);
 		acct_update_integrals();
-		mm->rss--;
+		update_mm_counter(mm, rss, -1);
 		(*mapcount)--;
 	}

@@ -804,7 +804,7 @@ static int try_to_unmap_file(struct page
 			if (vma->vm_flags & (VM_LOCKED|VM_RESERVED))
 				continue;
 			cursor = (unsigned long) vma->vm_private_data;
-			while (vma->vm_mm->rss &&
+			while (get_mm_counter(vma->vm_mm, rss) &&
 				cursor < max_nl_cursor &&
 				cursor < vma->vm_end - vma->vm_start) {
 				try_to_unmap_cluster(cursor, &mapcount, vma);
Index: linux-2.6.10/fs/proc/task_mmu.c
===================================================================
--- linux-2.6.10.orig/fs/proc/task_mmu.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/fs/proc/task_mmu.c	2005-01-28 11:02:00.000000000 -0800
@@ -24,7 +24,7 @@ char *task_mem(struct mm_struct *mm, cha
 		"VmPTE:\t%8lu kB\n",
 		(mm->total_vm - mm->reserved_vm) << (PAGE_SHIFT-10),
 		mm->locked_vm << (PAGE_SHIFT-10),
-		mm->rss << (PAGE_SHIFT-10),
+		get_mm_counter(mm, rss) << (PAGE_SHIFT-10),
 		data << (PAGE_SHIFT-10),
 		mm->stack_vm << (PAGE_SHIFT-10), text, lib,
 		(PTRS_PER_PTE*sizeof(pte_t)*mm->nr_ptes) >> 10);
@@ -39,11 +39,13 @@ unsigned long task_vsize(struct mm_struc
 int task_statm(struct mm_struct *mm, int *shared, int *text,
 	       int *data, int *resident)
 {
-	*shared = mm->rss - mm->anon_rss;
+	int rss = get_mm_counter(mm, rss);
+
+	*shared = rss - get_mm_counter(mm, anon_rss);
 	*text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK))
 								>> PAGE_SHIFT;
 	*data = mm->total_vm - mm->shared_vm;
-	*resident = mm->rss;
+	*resident = rss;
 	return mm->total_vm;
 }

Index: linux-2.6.10/mm/mmap.c
===================================================================
--- linux-2.6.10.orig/mm/mmap.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/mm/mmap.c	2005-01-28 11:02:00.000000000 -0800
@@ -2003,7 +2003,7 @@ void exit_mmap(struct mm_struct *mm)
 	vma = mm->mmap;
 	mm->mmap = mm->mmap_cache = NULL;
 	mm->mm_rb = RB_ROOT;
-	mm->rss = 0;
+	set_mm_counter(mm, rss, 0);
 	mm->total_vm = 0;
 	mm->locked_vm = 0;

Index: linux-2.6.10/kernel/fork.c
===================================================================
--- linux-2.6.10.orig/kernel/fork.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/kernel/fork.c	2005-01-28 11:02:00.000000000 -0800
@@ -174,8 +174,8 @@ static inline int dup_mmap(struct mm_str
 	mm->mmap_cache = NULL;
 	mm->free_area_cache = oldmm->mmap_base;
 	mm->map_count = 0;
-	mm->rss = 0;
-	mm->anon_rss = 0;
+	set_mm_counter(mm, rss, 0);
+	set_mm_counter(mm, anon_rss, 0);
 	cpus_clear(mm->cpu_vm_mask);
 	mm->mm_rb = RB_ROOT;
 	rb_link = &mm->mm_rb.rb_node;
@@ -471,7 +471,7 @@ static int copy_mm(unsigned long clone_f
 	if (retval)
 		goto free_pt;

-	mm->hiwater_rss = mm->rss;
+	mm->hiwater_rss = get_mm_counter(mm,rss);
 	mm->hiwater_vm = mm->total_vm;

 good_mm:
Index: linux-2.6.10/include/asm-generic/tlb.h
===================================================================
--- linux-2.6.10.orig/include/asm-generic/tlb.h	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/include/asm-generic/tlb.h	2005-01-28 11:02:00.000000000 -0800
@@ -88,11 +88,11 @@ tlb_finish_mmu(struct mmu_gather *tlb, u
 {
 	int freed = tlb->freed;
 	struct mm_struct *mm = tlb->mm;
-	int rss = mm->rss;
+	int rss = get_mm_counter(mm, rss);

 	if (rss < freed)
 		freed = rss;
-	mm->rss = rss - freed;
+	update_mm_counter(mm, rss, -freed);
 	tlb_flush_mmu(tlb, start, end);

 	/* keep the page table cache within bounds */
Index: linux-2.6.10/fs/binfmt_flat.c
===================================================================
--- linux-2.6.10.orig/fs/binfmt_flat.c	2004-12-24 13:33:47.000000000 -0800
+++ linux-2.6.10/fs/binfmt_flat.c	2005-01-28 11:02:00.000000000 -0800
@@ -650,7 +650,7 @@ static int load_flat_file(struct linux_b
 		current->mm->start_brk = datapos + data_len + bss_len;
 		current->mm->brk = (current->mm->start_brk + 3) & ~3;
 		current->mm->context.end_brk = memp + ksize((void *) memp) - stack_len;
-		current->mm->rss = 0;
+		set_mm_counter(current->mm, rss, 0);
 	}

 	if (flags & FLAT_FLAG_KTRACE)
Index: linux-2.6.10/fs/exec.c
===================================================================
--- linux-2.6.10.orig/fs/exec.c	2005-01-28 11:01:50.000000000 -0800
+++ linux-2.6.10/fs/exec.c	2005-01-28 11:02:00.000000000 -0800
@@ -326,7 +326,7 @@ void install_arg_page(struct vm_area_str
 		pte_unmap(pte);
 		goto out;
 	}
-	mm->rss++;
+	update_mm_counter(mm, rss, 1);
 	lru_cache_add_active(page);
 	set_pte(pte, pte_mkdirty(pte_mkwrite(mk_pte(
 					page, vma->vm_page_prot))));
Index: linux-2.6.10/fs/binfmt_som.c
===================================================================
--- linux-2.6.10.orig/fs/binfmt_som.c	2005-01-28 11:01:50.000000000 -0800
+++ linux-2.6.10/fs/binfmt_som.c	2005-01-28 11:02:00.000000000 -0800
@@ -259,7 +259,7 @@ load_som_binary(struct linux_binprm * bp
 	create_som_tables(bprm);

 	current->mm->start_stack = bprm->p;
-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);

 #if 0
 	printk("(start_brk) %08lx\n" , (unsigned long) current->mm->start_brk);
Index: linux-2.6.10/mm/fremap.c
===================================================================
--- linux-2.6.10.orig/mm/fremap.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/mm/fremap.c	2005-01-28 11:02:00.000000000 -0800
@@ -39,7 +39,7 @@ static inline void zap_pte(struct mm_str
 					set_page_dirty(page);
 				page_remove_rmap(page);
 				page_cache_release(page);
-				mm->rss--;
+				update_mm_counter(mm, rss, -1);
 			}
 		}
 	} else {
@@ -92,7 +92,7 @@ int install_page(struct mm_struct *mm, s

 	zap_pte(mm, vma, addr, pte);

-	mm->rss++;
+	update_mm_counter(mm,rss, 1);
 	flush_icache_page(vma, page);
 	set_pte(pte, mk_pte(page, prot));
 	page_add_file_rmap(page);
Index: linux-2.6.10/mm/swapfile.c
===================================================================
--- linux-2.6.10.orig/mm/swapfile.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/mm/swapfile.c	2005-01-28 11:02:00.000000000 -0800
@@ -432,7 +432,7 @@ static void
 unuse_pte(struct vm_area_struct *vma, unsigned long address, pte_t *dir,
 	swp_entry_t entry, struct page *page)
 {
-	vma->vm_mm->rss++;
+	update_mm_counter(vma->vm_mm, rss, 1);
 	get_page(page);
 	set_pte(dir, pte_mkold(mk_pte(page, vma->vm_page_prot)));
 	page_add_anon_rmap(page, vma, address);
Index: linux-2.6.10/fs/binfmt_aout.c
===================================================================
--- linux-2.6.10.orig/fs/binfmt_aout.c	2005-01-28 11:01:50.000000000 -0800
+++ linux-2.6.10/fs/binfmt_aout.c	2005-01-28 11:02:00.000000000 -0800
@@ -317,7 +317,7 @@ static int load_aout_binary(struct linux
 		(current->mm->start_brk = N_BSSADDR(ex));
 	current->mm->free_area_cache = current->mm->mmap_base;

-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);
 	current->mm->mmap = NULL;
 	compute_creds(bprm);
  	current->flags &= ~PF_FORKNOEXEC;
Index: linux-2.6.10/arch/ia64/mm/hugetlbpage.c
===================================================================
--- linux-2.6.10.orig/arch/ia64/mm/hugetlbpage.c	2005-01-28 11:01:48.000000000 -0800
+++ linux-2.6.10/arch/ia64/mm/hugetlbpage.c	2005-01-28 11:02:00.000000000 -0800
@@ -73,7 +73,7 @@ set_huge_pte (struct mm_struct *mm, stru
 {
 	pte_t entry;

-	mm->rss += (HPAGE_SIZE / PAGE_SIZE);
+	update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
 	if (write_access) {
 		entry =
 		    pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
@@ -116,7 +116,7 @@ int copy_hugetlb_page_range(struct mm_st
 		ptepage = pte_page(entry);
 		get_page(ptepage);
 		set_pte(dst_pte, entry);
-		dst->rss += (HPAGE_SIZE / PAGE_SIZE);
+		update_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
 		addr += HPAGE_SIZE;
 	}
 	return 0;
@@ -246,7 +246,7 @@ void unmap_hugepage_range(struct vm_area
 		put_page(page);
 		pte_clear(pte);
 	}
-	mm->rss -= (end - start) >> PAGE_SHIFT;
+	update_mm_counter(mm, rss, - ((end - start) >> PAGE_SHIFT));
 	flush_tlb_range(vma, start, end);
 }

Index: linux-2.6.10/fs/binfmt_elf.c
===================================================================
--- linux-2.6.10.orig/fs/binfmt_elf.c	2005-01-28 11:01:55.000000000 -0800
+++ linux-2.6.10/fs/binfmt_elf.c	2005-01-28 11:02:00.000000000 -0800
@@ -764,7 +764,7 @@ static int load_elf_binary(struct linux_

 	/* Do this so that we can load the interpreter, if need be.  We will
 	   change some of these later */
-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);
 	current->mm->free_area_cache = current->mm->mmap_base;
 	retval = setup_arg_pages(bprm, STACK_TOP, executable_stack);
 	if (retval < 0) {
Index: linux-2.6.10/include/asm-ia64/tlb.h
===================================================================
--- linux-2.6.10.orig/include/asm-ia64/tlb.h	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/include/asm-ia64/tlb.h	2005-01-28 11:02:00.000000000 -0800
@@ -161,11 +161,11 @@ tlb_finish_mmu (struct mmu_gather *tlb,
 {
 	unsigned long freed = tlb->freed;
 	struct mm_struct *mm = tlb->mm;
-	unsigned long rss = mm->rss;
+	unsigned long rss = get_mm_counter(mm, rss);

 	if (rss < freed)
 		freed = rss;
-	mm->rss = rss - freed;
+	update_mm_counter(mm, rss, -freed);
 	/*
 	 * Note: tlb->nr may be 0 at this point, so we can't rely on tlb->start_addr and
 	 * tlb->end_addr.
Index: linux-2.6.10/include/asm-arm/tlb.h
===================================================================
--- linux-2.6.10.orig/include/asm-arm/tlb.h	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/include/asm-arm/tlb.h	2005-01-28 11:02:00.000000000 -0800
@@ -54,11 +54,11 @@ tlb_finish_mmu(struct mmu_gather *tlb, u
 {
 	struct mm_struct *mm = tlb->mm;
 	unsigned long freed = tlb->freed;
-	int rss = mm->rss;
+	int rss = get_mm_counter(mm, rss);

 	if (rss < freed)
 		freed = rss;
-	mm->rss = rss - freed;
+	update_mm_counter(mm, rss, -freed);

 	if (freed) {
 		flush_tlb_mm(mm);
Index: linux-2.6.10/include/asm-arm26/tlb.h
===================================================================
--- linux-2.6.10.orig/include/asm-arm26/tlb.h	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/include/asm-arm26/tlb.h	2005-01-28 11:02:00.000000000 -0800
@@ -37,11 +37,11 @@ tlb_finish_mmu(struct mmu_gather *tlb, u
 {
         struct mm_struct *mm = tlb->mm;
         unsigned long freed = tlb->freed;
-        int rss = mm->rss;
+        int rss = get_mm_counter(mm, rss);

         if (rss < freed)
                 freed = rss;
-        mm->rss = rss - freed;
+        update_mm_counter(mm, rss, -freed);

         if (freed) {
                 flush_tlb_mm(mm);
Index: linux-2.6.10/include/asm-sparc64/tlb.h
===================================================================
--- linux-2.6.10.orig/include/asm-sparc64/tlb.h	2004-12-24 13:35:23.000000000 -0800
+++ linux-2.6.10/include/asm-sparc64/tlb.h	2005-01-28 11:02:00.000000000 -0800
@@ -80,11 +80,11 @@ static inline void tlb_finish_mmu(struct
 {
 	unsigned long freed = mp->freed;
 	struct mm_struct *mm = mp->mm;
-	unsigned long rss = mm->rss;
+	unsigned long rss = get_mm_counter(mm, rss);

 	if (rss < freed)
 		freed = rss;
-	mm->rss = rss - freed;
+	update_mm_counter(mm, rss, -freed);

 	tlb_flush_mmu(mp);

Index: linux-2.6.10/arch/sh/mm/hugetlbpage.c
===================================================================
--- linux-2.6.10.orig/arch/sh/mm/hugetlbpage.c	2004-12-24 13:34:58.000000000 -0800
+++ linux-2.6.10/arch/sh/mm/hugetlbpage.c	2005-01-28 11:02:00.000000000 -0800
@@ -62,7 +62,7 @@ static void set_huge_pte(struct mm_struc
 	unsigned long i;
 	pte_t entry;

-	mm->rss += (HPAGE_SIZE / PAGE_SIZE);
+	update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);

 	if (write_access)
 		entry = pte_mkwrite(pte_mkdirty(mk_pte(page,
@@ -115,7 +115,7 @@ int copy_hugetlb_page_range(struct mm_st
 			pte_val(entry) += PAGE_SIZE;
 			dst_pte++;
 		}
-		dst->rss += (HPAGE_SIZE / PAGE_SIZE);
+		update_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
 		addr += HPAGE_SIZE;
 	}
 	return 0;
@@ -206,7 +206,7 @@ void unmap_hugepage_range(struct vm_area
 			pte++;
 		}
 	}
-	mm->rss -= (end - start) >> PAGE_SHIFT;
+	update_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT));
 	flush_tlb_range(vma, start, end);
 }

Index: linux-2.6.10/arch/x86_64/ia32/ia32_aout.c
===================================================================
--- linux-2.6.10.orig/arch/x86_64/ia32/ia32_aout.c	2005-01-28 11:01:48.000000000 -0800
+++ linux-2.6.10/arch/x86_64/ia32/ia32_aout.c	2005-01-28 11:02:00.000000000 -0800
@@ -313,7 +313,7 @@ static int load_aout_binary(struct linux
 		(current->mm->start_brk = N_BSSADDR(ex));
 	current->mm->free_area_cache = TASK_UNMAPPED_BASE;

-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);
 	current->mm->mmap = NULL;
 	compute_creds(bprm);
  	current->flags &= ~PF_FORKNOEXEC;
Index: linux-2.6.10/arch/ppc64/mm/hugetlbpage.c
===================================================================
--- linux-2.6.10.orig/arch/ppc64/mm/hugetlbpage.c	2005-01-28 11:01:48.000000000 -0800
+++ linux-2.6.10/arch/ppc64/mm/hugetlbpage.c	2005-01-28 11:02:00.000000000 -0800
@@ -153,7 +153,7 @@ static void set_huge_pte(struct mm_struc
 {
 	pte_t entry;

-	mm->rss += (HPAGE_SIZE / PAGE_SIZE);
+	update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
 	if (write_access) {
 		entry =
 		    pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
@@ -311,7 +311,7 @@ int copy_hugetlb_page_range(struct mm_st

 		ptepage = pte_page(entry);
 		get_page(ptepage);
-		dst->rss += (HPAGE_SIZE / PAGE_SIZE);
+		update_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
 		set_pte(dst_pte, entry);

 		addr += HPAGE_SIZE;
@@ -421,7 +421,7 @@ void unmap_hugepage_range(struct vm_area

 		put_page(page);
 	}
-	mm->rss -= (end - start) >> PAGE_SHIFT;
+	update_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT));
 	flush_tlb_pending();
 }

Index: linux-2.6.10/arch/sh64/mm/hugetlbpage.c
===================================================================
--- linux-2.6.10.orig/arch/sh64/mm/hugetlbpage.c	2004-12-24 13:34:30.000000000 -0800
+++ linux-2.6.10/arch/sh64/mm/hugetlbpage.c	2005-01-28 11:02:00.000000000 -0800
@@ -62,7 +62,7 @@ static void set_huge_pte(struct mm_struc
 	unsigned long i;
 	pte_t entry;

-	mm->rss += (HPAGE_SIZE / PAGE_SIZE);
+	update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);

 	if (write_access)
 		entry = pte_mkwrite(pte_mkdirty(mk_pte(page,
@@ -115,7 +115,7 @@ int copy_hugetlb_page_range(struct mm_st
 			pte_val(entry) += PAGE_SIZE;
 			dst_pte++;
 		}
-		dst->rss += (HPAGE_SIZE / PAGE_SIZE);
+		update_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
 		addr += HPAGE_SIZE;
 	}
 	return 0;
@@ -206,7 +206,7 @@ void unmap_hugepage_range(struct vm_area
 			pte++;
 		}
 	}
-	mm->rss -= (end - start) >> PAGE_SHIFT;
+	update_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT));
 	flush_tlb_range(vma, start, end);
 }

Index: linux-2.6.10/arch/sparc64/mm/hugetlbpage.c
===================================================================
--- linux-2.6.10.orig/arch/sparc64/mm/hugetlbpage.c	2004-12-24 13:35:01.000000000 -0800
+++ linux-2.6.10/arch/sparc64/mm/hugetlbpage.c	2005-01-28 11:02:00.000000000 -0800
@@ -59,7 +59,7 @@ static void set_huge_pte(struct mm_struc
 	unsigned long i;
 	pte_t entry;

-	mm->rss += (HPAGE_SIZE / PAGE_SIZE);
+	update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);

 	if (write_access)
 		entry = pte_mkwrite(pte_mkdirty(mk_pte(page,
@@ -112,7 +112,7 @@ int copy_hugetlb_page_range(struct mm_st
 			pte_val(entry) += PAGE_SIZE;
 			dst_pte++;
 		}
-		dst->rss += (HPAGE_SIZE / PAGE_SIZE);
+		update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
 		addr += HPAGE_SIZE;
 	}
 	return 0;
@@ -203,7 +203,7 @@ void unmap_hugepage_range(struct vm_area
 			pte++;
 		}
 	}
-	mm->rss -= (end - start) >> PAGE_SHIFT;
+	update_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT));
 	flush_tlb_range(vma, start, end);
 }

Index: linux-2.6.10/arch/mips/kernel/irixelf.c
===================================================================
--- linux-2.6.10.orig/arch/mips/kernel/irixelf.c	2005-01-28 11:01:48.000000000 -0800
+++ linux-2.6.10/arch/mips/kernel/irixelf.c	2005-01-28 11:02:00.000000000 -0800
@@ -690,7 +690,7 @@ static int load_irix_binary(struct linux
 	/* Do this so that we can load the interpreter, if need be.  We will
 	 * change some of these later.
 	 */
-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);
 	setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
 	current->mm->start_stack = bprm->p;

Index: linux-2.6.10/arch/m68k/atari/stram.c
===================================================================
--- linux-2.6.10.orig/arch/m68k/atari/stram.c	2005-01-28 11:01:48.000000000 -0800
+++ linux-2.6.10/arch/m68k/atari/stram.c	2005-01-28 11:02:00.000000000 -0800
@@ -635,7 +635,7 @@ static inline void unswap_pte(struct vm_
 	set_pte(dir, pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
 	swap_free(entry);
 	get_page(page);
-	++vma->vm_mm->rss;
+	update_mm_counter(vma->vm_mm, rss, 1);
 }

 static inline void unswap_pmd(struct vm_area_struct * vma, pmd_t *dir,
Index: linux-2.6.10/arch/i386/mm/hugetlbpage.c
===================================================================
--- linux-2.6.10.orig/arch/i386/mm/hugetlbpage.c	2005-01-28 11:01:47.000000000 -0800
+++ linux-2.6.10/arch/i386/mm/hugetlbpage.c	2005-01-28 11:02:00.000000000 -0800
@@ -46,7 +46,7 @@ static void set_huge_pte(struct mm_struc
 {
 	pte_t entry;

-	mm->rss += (HPAGE_SIZE / PAGE_SIZE);
+	update_mm_counter(mm, rss, HPAGE_SIZE / PAGE_SIZE);
 	if (write_access) {
 		entry =
 		    pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot)));
@@ -86,7 +86,7 @@ int copy_hugetlb_page_range(struct mm_st
 		ptepage = pte_page(entry);
 		get_page(ptepage);
 		set_pte(dst_pte, entry);
-		dst->rss += (HPAGE_SIZE / PAGE_SIZE);
+		update_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
 		addr += HPAGE_SIZE;
 	}
 	return 0;
@@ -222,7 +222,7 @@ void unmap_hugepage_range(struct vm_area
 		page = pte_page(pte);
 		put_page(page);
 	}
-	mm->rss -= (end - start) >> PAGE_SHIFT;
+	update_mm_counter(mm ,rss, -((end - start) >> PAGE_SHIFT));
 	flush_tlb_range(vma, start, end);
 }

Index: linux-2.6.10/arch/sparc64/kernel/binfmt_aout32.c
===================================================================
--- linux-2.6.10.orig/arch/sparc64/kernel/binfmt_aout32.c	2005-01-28 11:01:48.000000000 -0800
+++ linux-2.6.10/arch/sparc64/kernel/binfmt_aout32.c	2005-01-28 11:02:00.000000000 -0800
@@ -241,7 +241,7 @@ static int load_aout32_binary(struct lin
 	current->mm->brk = ex.a_bss +
 		(current->mm->start_brk = N_BSSADDR(ex));

-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);
 	current->mm->mmap = NULL;
 	compute_creds(bprm);
  	current->flags &= ~PF_FORKNOEXEC;
Index: linux-2.6.10/fs/proc/array.c
===================================================================
--- linux-2.6.10.orig/fs/proc/array.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/fs/proc/array.c	2005-01-28 11:02:00.000000000 -0800
@@ -423,7 +423,7 @@ static int do_task_stat(struct task_stru
 		jiffies_to_clock_t(task->it_real_value),
 		start_time,
 		vsize,
-		mm ? mm->rss : 0, /* you might want to shift this left 3 */
+		mm ? get_mm_counter(mm, rss) : 0, /* you might want to shift this left 3 */
 	        rsslim,
 		mm ? mm->start_code : 0,
 		mm ? mm->end_code : 0,
Index: linux-2.6.10/fs/binfmt_elf_fdpic.c
===================================================================
--- linux-2.6.10.orig/fs/binfmt_elf_fdpic.c	2005-01-28 11:01:50.000000000 -0800
+++ linux-2.6.10/fs/binfmt_elf_fdpic.c	2005-01-28 10:53:07.000000000 -0800
@@ -299,7 +299,7 @@ static int load_elf_fdpic_binary(struct
 	/* do this so that we can load the interpreter, if need be
 	 * - we will change some of these later
 	 */
-	current->mm->rss = 0;
+	set_mm_counter(current->mm, rss, 0);

 #ifdef CONFIG_MMU
 	retval = setup_arg_pages(bprm, current->mm->start_stack, executable_stack);
Index: linux-2.6.10/mm/nommu.c
===================================================================
--- linux-2.6.10.orig/mm/nommu.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/mm/nommu.c	2005-01-28 11:04:33.000000000 -0800
@@ -958,10 +958,11 @@ void arch_unmap_area(struct vm_area_stru
 void update_mem_hiwater(void)
 {
 	struct task_struct *tsk = current;
+	unsigned long rss = get_mm_counter(tsk->mm, rss);

 	if (likely(tsk->mm)) {
-		if (tsk->mm->hiwater_rss < tsk->mm->rss)
-			tsk->mm->hiwater_rss = tsk->mm->rss;
+		if (tsk->mm->hiwater_rss < rss)
+			tsk->mm->hiwater_rss = rss;
 		if (tsk->mm->hiwater_vm < tsk->mm->total_vm)
 			tsk->mm->hiwater_vm = tsk->mm->total_vm;
 	}
Index: linux-2.6.10/kernel/acct.c
===================================================================
--- linux-2.6.10.orig/kernel/acct.c	2005-01-28 11:01:51.000000000 -0800
+++ linux-2.6.10/kernel/acct.c	2005-01-28 11:03:13.000000000 -0800
@@ -544,7 +544,7 @@ void acct_update_integrals(void)
 		if (delta == 0)
 			return;
 		tsk->acct_stimexpd = tsk->stime;
-		tsk->acct_rss_mem1 += delta * tsk->mm->rss;
+		tsk->acct_rss_mem1 += delta * get_mm_counter(tsk->mm, rss);
 		tsk->acct_vm_mem1 += delta * tsk->mm->total_vm;
 	}
 }


  parent reply	other threads:[~2005-01-28 20:55 UTC|newest]

Thread overview: 286+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.44.0411061527440.3567-100000@localhost.localdomain>
     [not found] ` <Pine.LNX.4.58.0411181126440.30385@schroedinger.engr.sgi.com>
     [not found]   ` <Pine.LNX.4.58.0411181715280.834@schroedinger.engr.sgi.com>
     [not found]     ` <419D581F.2080302@yahoo.com.au>
     [not found]       ` <Pine.LNX.4.58.0411181835540.1421@schroedinger.engr.sgi.com>
     [not found]         ` <419D5E09.20805@yahoo.com.au>
     [not found]           ` <Pine.LNX.4.58.0411181921001.1674@schroedinger.engr.sgi.com>
     [not found]             ` <1100848068.25520.49.camel@gaston>
2004-11-19 19:42               ` page fault scalability patch V11 [0/7]: overview Christoph Lameter
2004-11-19 19:43                 ` page fault scalability patch V11 [1/7]: sloppy rss Christoph Lameter
2004-11-19 20:50                   ` Hugh Dickins
2004-11-20  1:29                     ` Christoph Lameter
2004-11-22 15:00                       ` Hugh Dickins
2004-11-22 21:50                         ` deferred rss update instead of " Christoph Lameter
2004-11-22 22:11                           ` Andrew Morton
2004-11-22 22:13                             ` Christoph Lameter
2004-11-22 22:17                               ` Benjamin Herrenschmidt
2004-11-22 22:45                               ` Andrew Morton
2004-11-22 22:48                                 ` Christoph Lameter
2004-11-22 23:09                                   ` Nick Piggin
2004-11-22 23:13                                     ` Christoph Lameter
2004-11-22 23:16                                   ` Andrew Morton
2004-11-22 23:19                                     ` Christoph Lameter
2004-11-22 22:22                           ` Linus Torvalds
2004-11-22 22:27                             ` Christoph Lameter
2004-11-22 22:40                               ` Linus Torvalds
2004-12-01 23:41                                 ` page fault scalability patch V12 [0/7]: Overview and performance tests Christoph Lameter
2004-12-01 23:42                                   ` page fault scalability patch V12 [1/7]: Reduce use of thepage_table_lock Christoph Lameter
2004-12-01 23:42                                   ` page fault scalability patch V12 [2/7]: atomic pte operations for ia64 Christoph Lameter
2004-12-01 23:43                                   ` page fault scalability patch V12 [3/7]: universal cmpxchg for i386 Christoph Lameter
2004-12-01 23:43                                   ` page fault scalability patch V12 [4/7]: atomic pte operations " Christoph Lameter
2004-12-01 23:44                                   ` page fault scalability patch V12 [5/7]: atomic pte operations for x86_64 Christoph Lameter
2004-12-01 23:45                                   ` page fault scalability patch V12 [6/7]: atomic pte operations for s390 Christoph Lameter
2004-12-01 23:45                                   ` page fault scalability patch V12 [7/7]: Split counter for rss Christoph Lameter
2005-01-04 19:35                                     ` page fault scalability patch V14 [0/7]: Overview Christoph Lameter
2005-01-04 19:35                                       ` page fault scalability patch V14 [1/7]: Avoid taking page_table_lock Christoph Lameter
2005-01-04 19:36                                       ` page fault scalability patch V14 [2/7]: ia64 atomic pte operations Christoph Lameter
2005-01-04 19:37                                       ` page fault scalability patch V14 [3/7]: i386 universal cmpxchg Christoph Lameter
2005-01-05 11:51                                         ` Roman Zippel
2005-01-04 19:37                                       ` page fault scalability patch V14 [4/7]: i386 atomic pte operations Christoph Lameter
2005-01-04 19:38                                       ` page fault scalability patch V14 [5/7]: x86_64 " Christoph Lameter
2005-01-04 19:46                                         ` Andi Kleen
2005-01-04 19:58                                           ` Christoph Lameter
2005-01-04 20:21                                             ` Andi Kleen
2005-01-04 20:32                                               ` Christoph Lameter
2005-01-11 17:39                                           ` page table lock patch V15 [0/7]: overview Christoph Lameter
2005-01-11 17:40                                             ` page table lock patch V15 [1/7]: Reduce use of page table lock Christoph Lameter
2005-01-11 17:41                                             ` page table lock patch V15 [2/7]: ia64 atomic pte operations Christoph Lameter
2005-01-11 17:41                                             ` page table lock patch V15 [3/7]: i386 universal cmpxchg Christoph Lameter
2005-01-11 17:42                                             ` page table lock patch V15 [4/7]: i386 atomic pte operations Christoph Lameter
2005-01-11 17:43                                             ` page table lock patch V15 [5/7]: x86_64 " Christoph Lameter
2005-01-11 17:43                                             ` page table lock patch V15 [6/7]: s390 " Christoph Lameter
2005-01-11 17:44                                             ` page table lock patch V15 [7/7]: Split RSS counter Christoph Lameter
2005-01-12  5:59                                             ` page table lock patch V15 [0/7]: overview Nick Piggin
2005-01-12  9:42                                               ` Andrew Morton
2005-01-12 12:29                                                 ` Marcelo Tosatti
2005-01-12 12:43                                                 ` Hugh Dickins
2005-01-12 21:22                                                   ` Hugh Dickins
2005-01-12 23:52                                                     ` Christoph Lameter
2005-01-13  2:52                                                       ` Hugh Dickins
2005-01-13 17:05                                                         ` Christoph Lameter
2005-01-12 16:39                                                 ` Christoph Lameter
2005-01-12 16:49                                                   ` Christoph Hellwig
2005-01-12 17:37                                                     ` Christoph Lameter
2005-01-12 17:41                                                       ` Christoph Hellwig
2005-01-12 17:52                                                         ` Christoph Lameter
2005-01-12 18:04                                                           ` Christoph Hellwig
2005-01-12 18:20                                                           ` Andrew Walrond
2005-01-12 18:43                                                   ` Andrew Morton
2005-01-12 19:06                                                     ` Christoph Lameter
2005-01-14  3:39                                                       ` Roman Zippel
2005-01-14  4:14                                                         ` Andi Kleen
2005-01-14 12:02                                                           ` Roman Zippel
2005-01-12 23:16                                                     ` Nick Piggin
2005-01-12 23:30                                                       ` Andrew Morton
2005-01-12 23:50                                                         ` Nick Piggin
2005-01-12 23:54                                                           ` Christoph Lameter
2005-01-13  0:10                                                             ` Nick Piggin
2005-01-13  0:16                                                               ` Christoph Lameter
2005-01-13  0:42                                                                 ` Nick Piggin
2005-01-13 22:19                                                                   ` Peter Chubb
2005-01-13  3:18                                                                 ` Andi Kleen
2005-01-13 17:11                                                                   ` Christoph Lameter
2005-01-13 17:25                                                                     ` Linus Torvalds
2005-01-13 18:02                                                                     ` Andi Kleen
2005-01-13 18:16                                                                       ` Christoph Lameter
2005-01-13 20:17                                                                         ` Andi Kleen
2005-01-14  1:09                                                                       ` Christoph Lameter
2005-01-14  4:39                                                                         ` Andi Kleen
2005-01-14  4:52                                                                           ` page table lock patch V15 [0/7]: overview II Andi Kleen
2005-01-14  4:59                                                                             ` Nick Piggin
2005-01-14 10:47                                                                               ` Andi Kleen
2005-01-14 10:57                                                                                 ` Nick Piggin
2005-01-14 11:11                                                                                   ` Andi Kleen
2005-01-14 16:57                                                                                     ` Christoph Lameter
2005-01-14  4:54                                                                           ` page table lock patch V15 [0/7]: overview Nick Piggin
2005-01-14 10:46                                                                             ` Andi Kleen
2005-01-14 16:52                                                                           ` Christoph Lameter
2005-01-14 17:01                                                                             ` Andi Kleen
2005-01-14 17:08                                                                               ` Christoph Lameter
2005-01-14 17:11                                                                                 ` Andi Kleen
2005-01-14 17:43                                                                               ` Linus Torvalds
2005-01-28 20:35                                                                               ` page fault scalability patch V16 [0/4]: redesign overview Christoph Lameter
2005-01-28 20:36                                                                                 ` page fault scalability patch V16 [1/4]: avoid intermittent clearing of ptes Christoph Lameter
2005-01-28 20:36                                                                                 ` Christoph Lameter [this message]
2005-01-28 20:37                                                                                 ` page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault Christoph Lameter
2005-02-01  4:08                                                                                   ` Nick Piggin
2005-02-01 18:47                                                                                     ` Christoph Lameter
2005-02-01 19:01                                                                                     ` Christoph Lameter
2005-02-02  0:31                                                                                       ` Nick Piggin
2005-02-02  1:20                                                                                         ` Christoph Lameter
2005-02-02  1:41                                                                                           ` Nick Piggin
2005-02-02  2:49                                                                                             ` Christoph Lameter
2005-02-02  3:09                                                                                               ` Nick Piggin
2005-02-04  6:27                                                                                                 ` Nick Piggin
2005-02-17  0:57                                                                                         ` page fault scalability patchsets update: prezeroing, prefaulting and atomic operations Christoph Lameter
2005-02-24  6:04                                                                                           ` A Proposal for an MMU abstraction layer Christoph Lameter
2005-02-01  4:16                                                                                   ` page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault Nick Piggin
2005-02-01  8:20                                                                                     ` Kernel 2.4.21 hangs up baswaraj kasture
2005-02-01  8:35                                                                                       ` Arjan van de Ven
2005-02-01  9:03                                                                                       ` Christian Hildner
2005-02-07  6:14                                                                                         ` Kernel 2.4.21 gives kernel panic at boot time baswaraj kasture
2005-02-01 17:46                                                                                       ` Kernel 2.4.21 hangs up David Mosberger
2005-02-01 17:54                                                                                         ` Markus Trippelsdorf
2005-02-01 18:08                                                                                           ` David Mosberger
2005-02-01 18:44                                                                                     ` page fault scalability patch V16 [3/4]: Drop page_table_lock in handle_mm_fault Christoph Lameter
2005-01-28 20:38                                                                                 ` page fault scalability patch V16 [4/4]: Drop page_table_lock in do_anonymous_page Christoph Lameter
2005-01-13  3:09                                                           ` page table lock patch V15 [0/7]: overview Hugh Dickins
2005-01-13  3:46                                                             ` Nick Piggin
2005-01-13 17:14                                                               ` Christoph Lameter
2005-01-04 21:21                                         ` page fault scalability patch V14 [5/7]: x86_64 atomic pte operations Brian Gerst
2005-01-04 21:26                                           ` Christoph Lameter
2005-01-04 19:38                                       ` page fault scalability patch V14 [6/7]: s390 atomic pte operationsw Christoph Lameter
2005-01-04 19:39                                       ` page fault scalability patch V14 [7/7]: Split RSS counters Christoph Lameter
2004-12-02  0:10                                   ` page fault scalability patch V12 [0/7]: Overview and performance tests Linus Torvalds
2004-12-02  0:55                                     ` Andrew Morton
2004-12-02  1:46                                       ` Christoph Lameter
2004-12-02  6:21                                     ` Jeff Garzik
2004-12-02  6:34                                       ` Andrew Morton
2004-12-02  6:48                                         ` Jeff Garzik
2004-12-02  7:02                                           ` Andrew Morton
2004-12-02  7:26                                             ` Martin J. Bligh
2004-12-02  7:31                                               ` Jeff Garzik
2004-12-02 18:10                                                 ` cliff white
2004-12-02 18:17                                                   ` Gerrit Huizenga
2004-12-02 20:25                                                   ` linux-os
2004-12-08 17:24                                                   ` Anticipatory prefaulting in the page fault handler V1 Christoph Lameter
2004-12-08 17:33                                                     ` Jesse Barnes
2004-12-08 17:56                                                       ` Christoph Lameter
2004-12-08 18:33                                                         ` Jesse Barnes
2004-12-08 21:26                                                         ` David S. Miller
2004-12-08 21:42                                                           ` Linus Torvalds
2004-12-08 17:55                                                     ` Dave Hansen
2004-12-08 19:07                                                     ` Martin J. Bligh
2004-12-08 22:50                                                     ` Martin J. Bligh
2004-12-09 19:32                                                       ` Christoph Lameter
2004-12-10  2:13                                                         ` [OT:HUMOR] " Adam Heath
2004-12-13 14:30                                                         ` Akinobu Mita
2004-12-13 17:10                                                           ` Christoph Lameter
2004-12-13 22:16                                                             ` Martin J. Bligh
2004-12-14  1:32                                                               ` Anticipatory prefaulting in the page fault handler V2 Christoph Lameter
2004-12-14 19:31                                                                 ` Adam Litke
2004-12-15 19:03                                                                   ` Anticipatory prefaulting in the page fault handler V3 Christoph Lameter
2005-01-05  0:29                                                                   ` Anticipatory prefaulting in the page fault handler V4 Christoph Lameter
2004-12-14 12:24                                                             ` Anticipatory prefaulting in the page fault handler V1 Akinobu Mita
2004-12-14 15:25                                                               ` Akinobu Mita
2004-12-14 20:25                                                               ` Christoph Lameter
2004-12-09 10:57                                                     ` Pavel Machek
2004-12-09 11:32                                                       ` Nick Piggin
2004-12-09 17:05                                                       ` Christoph Lameter
2004-12-14 15:28                                                     ` Adam Litke
2004-12-02 18:43                                               ` page fault scalability patch V12 [0/7]: Overview and performance tests cliff white
2004-12-06 19:33                                                 ` Marcelo Tosatti
2004-12-02 16:24                                             ` Gerrit Huizenga
2004-12-02 17:34                                             ` cliff white
2004-12-02 19:48                                           ` Diego Calleja
2004-12-02 20:12                                             ` Jeff Garzik
2004-12-02 20:30                                               ` Diego Calleja
2004-12-02 21:08                                               ` Wichert Akkerman
2004-12-03  0:07                                               ` Francois Romieu
2004-12-02  7:00                                         ` Jeff Garzik
2004-12-02  7:05                                           ` Benjamin Herrenschmidt
2004-12-02  7:11                                             ` Jeff Garzik
2004-12-02 11:16                                               ` Benjamin Herrenschmidt
2004-12-02 14:30                                           ` Andy Warner
2005-01-06 23:40                                             ` Jeff Garzik
2004-12-02 18:27                                         ` Grant Grundler
2004-12-02 18:33                                           ` Andrew Morton
2004-12-02 18:36                                           ` Christoph Hellwig
2004-12-07 10:51                                         ` Pavel Machek
2004-12-09  8:00                                   ` Nick Piggin
2004-12-09 17:03                                     ` Christoph Lameter
2004-12-10  4:30                                       ` Nick Piggin
2004-12-09 18:37                                   ` Hugh Dickins
2004-12-09 22:02                                     ` page fault scalability patch V12: rss tasklist vs sloppy rss Christoph Lameter
2004-12-09 22:52                                       ` Andrew Morton
2004-12-09 22:52                                       ` William Lee Irwin III
2004-12-09 23:07                                         ` Christoph Lameter
2004-12-09 23:29                                           ` William Lee Irwin III
2004-12-09 23:49                                             ` Christoph Lameter
2004-12-10  4:26                                     ` page fault scalability patch V12 [0/7]: Overview and performance tests Nick Piggin
2004-12-10  4:54                                       ` Nick Piggin
2004-12-10  5:06                                         ` Benjamin Herrenschmidt
2004-12-10  5:19                                           ` Nick Piggin
2004-12-10 12:30                                             ` Hugh Dickins
2004-12-10 18:43                                     ` Christoph Lameter
2004-12-10 21:43                                       ` Hugh Dickins
2004-12-10 22:12                                         ` Andrew Morton
2004-12-10 23:52                                           ` Hugh Dickins
2004-12-11  0:18                                             ` Andrew Morton
2004-12-11  0:44                                               ` Hugh Dickins
2004-12-11  0:57                                                 ` Andrew Morton
2004-12-11  9:23                                                   ` Hugh Dickins
2004-12-12  7:54                                       ` Nick Piggin
2004-12-12  9:33                                         ` Hugh Dickins
2004-12-12  9:48                                           ` Nick Piggin
2004-12-12 21:24                                           ` William Lee Irwin III
2004-12-17  3:31                                             ` Christoph Lameter
2004-12-17  3:32                                             ` page fault scalability patch V13 [0/8]: Overview Christoph Lameter
2004-12-17  3:33                                               ` page fault scalability patch V13 [1/8]: Reduce the use of the page_table_lock Christoph Lameter
2004-12-17  3:33                                               ` page fault scalability patch V13 [2/8]: ia64 atomic pte operations Christoph Lameter
2004-12-17  3:34                                               ` page fault scalability patch V13 [3/8]: universal cmpxchg for i386 Christoph Lameter
2004-12-17  3:35                                               ` page fault scalability patch V13 [4/8]: atomic pte operations " Christoph Lameter
2004-12-17  3:36                                               ` page fault scalability patch V13 [5/8]: atomic pte operations for AMD64 Christoph Lameter
2004-12-17  3:38                                               ` page fault scalability patch V13 [7/8]: Split RSS Christoph Lameter
2004-12-17  3:39                                               ` page fault scalability patch V13 [8/8]: Prefaulting using ptep_cmpxchg Christoph Lameter
2004-12-17  5:55                                               ` page fault scalability patch V13 [0/8]: Overview Christoph Lameter
2004-12-10 20:03                                     ` pfault V12 : correction to tasklist rss Christoph Lameter
2004-12-10 21:24                                       ` Hugh Dickins
2004-12-10 21:38                                         ` Andrew Morton
2004-12-11  6:03                                           ` William Lee Irwin III
2004-11-22 22:32                             ` deferred rss update instead of sloppy rss Nick Piggin
2004-11-22 22:39                               ` Christoph Lameter
2004-11-22 23:14                                 ` Nick Piggin
2004-11-19 19:44                 ` page fault scalability patch V11 [2/7]: page fault handler optimizations Christoph Lameter
2004-11-19 19:44                 ` page fault scalability patch V11 [3/7]: ia64 atomic pte operations Christoph Lameter
2004-11-19 19:45                 ` page fault scalability patch V11 [4/7]: universal cmpxchg for i386 Christoph Lameter
2004-11-19 19:46                 ` page fault scalability patch V11 [5/7]: i386 atomic pte operations Christoph Lameter
2004-11-19 19:46                 ` page fault scalability patch V11 [6/7]: x86_64 " Christoph Lameter
2004-11-19 19:47                 ` page fault scalability patch V11 [7/7]: s390 " Christoph Lameter
2004-11-19 19:59                 ` page fault scalability patch V11 [0/7]: overview Linus Torvalds
2004-11-20  1:07                   ` Nick Piggin
2004-11-20  1:29                     ` Christoph Lameter
2004-11-20  1:45                       ` Nick Piggin
2004-11-20  1:58                       ` Linus Torvalds
2004-11-20  2:06                         ` Linus Torvalds
2004-11-20  1:56                     ` Linus Torvalds
2004-11-22 18:06                       ` Bill Davidsen
2004-11-20  2:03                   ` William Lee Irwin III
2004-11-20  2:25                     ` Nick Piggin
2004-11-20  2:41                       ` William Lee Irwin III
2004-11-20  2:46                         ` Nick Piggin
2004-11-20  3:37                     ` Nick Piggin
2004-11-20  3:55                       ` William Lee Irwin III
2004-11-20  4:03                         ` Nick Piggin
2004-11-20  4:06                           ` Nick Piggin
2004-11-20  4:23                           ` William Lee Irwin III
2004-11-20  4:29                             ` Nick Piggin
2004-11-20  5:38                               ` William Lee Irwin III
2004-11-20  5:50                                 ` Nick Piggin
2004-11-20  6:23                                   ` William Lee Irwin III
2004-11-20  6:49                                     ` Nick Piggin
2004-11-20  6:57                                       ` Andrew Morton
2004-11-20  7:04                                         ` Andrew Morton
2004-11-20  7:13                                         ` Nick Piggin
2004-11-20  8:00                                           ` William Lee Irwin III
2004-11-20 16:59                                           ` Martin J. Bligh
2004-11-20 17:14                                             ` Linus Torvalds
2004-11-20 19:08                                               ` William Lee Irwin III
2004-11-20 19:16                                                 ` Linus Torvalds
2004-11-20 19:33                                                   ` William Lee Irwin III
2004-11-22 17:44                                                     ` Christoph Lameter
2004-11-22 22:43                                                       ` William Lee Irwin III
2004-11-22 22:51                                                         ` Christoph Lameter
2004-11-23  2:25                                                           ` William Lee Irwin III
2004-11-20 20:25                                                 ` [OT] " Adam Heath
2004-11-20  7:15                                       ` William Lee Irwin III
2004-11-20  7:29                                         ` Nick Piggin
2004-11-20  7:45                                           ` touch_nmi_watchdog (was: page fault scalability patch V11 [0/7]: overview) Nick Piggin
2004-11-20  7:57                                           ` page fault scalability patch V11 [0/7]: overview Nick Piggin
2004-11-20  8:25                                             ` William Lee Irwin III
2004-11-20  2:04                 ` William Lee Irwin III
2004-11-20  2:18                   ` Nick Piggin
2004-11-20  2:34                     ` William Lee Irwin III
2004-11-20  2:40                       ` Nick Piggin
2004-11-20  3:04                         ` William Lee Irwin III
2004-11-20  3:14                           ` Nick Piggin
2004-11-20  3:43                             ` William Lee Irwin III
2004-11-20  3:58                               ` Nick Piggin
2004-11-20  4:01                                 ` William Lee Irwin III
2004-11-20  4:34                                 ` Robin Holt
2004-11-20  3:33                           ` Robin Holt
2004-11-20  4:24                             ` William Lee Irwin III
2004-11-20  2:06                 ` Robin Holt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.58.0501281236160.19266@schroedinger.engr.sgi.com \
    --to=clameter@sgi.com \
    --cc=ak@muc.de \
    --cc=akpm@osdl.org \
    --cc=benh@kernel.crashing.org \
    --cc=hugh@veritas.com \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).