linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: Hugh Dickins <hugh@veritas.com>
Cc: Linus Torvalds <torvalds@osdl.org>, Andrew Morton <akpm@osdl.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Nick Piggin <nickpiggin@yahoo.com.au>,
	linux-mm@kvack.org, linux-ia64@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: pfault V12 : correction to tasklist rss
Date: Fri, 10 Dec 2004 12:03:32 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.58.0412101150490.9169@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.44.0412091830580.17648-300000@localhost.localdomain>

On Thu, 9 Dec 2004, Hugh Dickins wrote:

> Updating current->rss in do_anonymous_page, current->anon_rss in
> page_add_anon_rmap, is not always correct: ptrace's access_process_vm
> uses get_user_pages on another task.  You need check that current->mm ==
> mm (or vma->vm_mm) before incrementing current->rss or current->anon_rss,
> fall back to mm (or vma->vm_mm) in rare case not (taking page_table_lock
> for that).  You'll also need to check !(current->flags & PF_BORROWED_MM),
> to guard against use_mm.  Or... just go back to sloppy rss.

Use_mm can simply attach the kernel thread to the mm via mm_add_thread
and will then update mm->rss when being detached again.

The issue with ptrace and get_user_pages is a bit thorny. I did the check
for mm = current->mm in the following patch. If mm != current->mm then
do the sloppy thing and increment mm->rss without the page table lock.
This should be a very special rare case.

One could also set current to the target task in get_user_pages but then
faults for the actual current task may increment the wrong counters. Could
we live with that?

Or simply leave as is. The pages are after all allocated by the ptrace
process and it should be held responsible for it.

My favorite rss solution is still just getting rid of rss and
anon_rss and do the long loops in procfs. Whichever process wants to
know better be willing to pay the price in cpu time and the code for
incrementing rss can be removed from the page fault handler.

We have no  real way of establishing the ownership of shared pages
anyways. Its counted when allocated. But the page may live on afterwards
in another process and then not be accounted for although its only user is
the new process. IMHO vm scans may be the only way of really getting an
accurate count.

But here is the improved list_rss patch:

Index: linux-2.6.9/include/linux/sched.h
===================================================================
--- linux-2.6.9.orig/include/linux/sched.h	2004-12-06 17:23:55.000000000 -0800
+++ linux-2.6.9/include/linux/sched.h	2004-12-10 11:39:00.000000000 -0800
@@ -30,6 +30,7 @@
 #include <linux/pid.h>
 #include <linux/percpu.h>
 #include <linux/topology.h>
+#include <linux/rcupdate.h>

 struct exec_domain;

@@ -217,6 +218,7 @@
 	int map_count;				/* number of VMAs */
 	struct rw_semaphore mmap_sem;
 	spinlock_t page_table_lock;		/* Protects page tables, mm->rss, mm->anon_rss */
+	long rss, anon_rss;

 	struct list_head mmlist;		/* List of maybe swapped mm's.  These are globally strung
 						 * together off init_mm.mmlist, and are protected
@@ -226,7 +228,7 @@
 	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;

 	unsigned long saved_auxv[42]; /* for /proc/PID/auxv */
@@ -236,6 +238,8 @@

 	/* Architecture-specific MM context */
 	mm_context_t context;
+	struct list_head task_list;		/* Tasks using this mm */
+	struct rcu_head rcu_head;		/* For freeing mm via rcu */

 	/* Token based thrashing protection. */
 	unsigned long swap_token_time;
@@ -545,6 +549,9 @@
 	struct list_head ptrace_list;

 	struct mm_struct *mm, *active_mm;
+	/* Split counters from mm */
+	long rss;
+	long anon_rss;

 /* task state */
 	struct linux_binfmt *binfmt;
@@ -578,6 +585,9 @@
 	struct completion *vfork_done;		/* for vfork() */
 	int __user *set_child_tid;		/* CLONE_CHILD_SETTID */
 	int __user *clear_child_tid;		/* CLONE_CHILD_CLEARTID */
+
+	/* List of other tasks using the same mm */
+	struct list_head mm_tasks;

 	unsigned long rt_priority;
 	unsigned long it_real_value, it_prof_value, it_virt_value;
@@ -1124,6 +1134,12 @@

 #endif

+void get_rss(struct mm_struct *mm, unsigned long *rss, unsigned long *anon_rss);
+
+void mm_remove_thread(struct mm_struct *mm, struct task_struct *tsk);
+void mm_add_thread(struct mm_struct *mm, struct task_struct *tsk);
+
 #endif /* __KERNEL__ */

 #endif
+
Index: linux-2.6.9/fs/proc/task_mmu.c
===================================================================
--- linux-2.6.9.orig/fs/proc/task_mmu.c	2004-12-06 17:23:54.000000000 -0800
+++ linux-2.6.9/fs/proc/task_mmu.c	2004-12-10 11:39:00.000000000 -0800
@@ -6,8 +6,9 @@

 char *task_mem(struct mm_struct *mm, char *buffer)
 {
-	unsigned long data, text, lib;
+	unsigned long data, text, lib, rss, anon_rss;

+	get_rss(mm, &rss, &anon_rss);
 	data = mm->total_vm - mm->shared_vm - mm->stack_vm;
 	text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK)) >> 10;
 	lib = (mm->exec_vm << (PAGE_SHIFT-10)) - text;
@@ -22,7 +23,7 @@
 		"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),
+		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);
@@ -37,11 +38,14 @@
 int task_statm(struct mm_struct *mm, int *shared, int *text,
 	       int *data, int *resident)
 {
-	*shared = mm->rss - mm->anon_rss;
+	unsigned long rss, anon_rss;
+
+	get_rss(mm, &rss, &anon_rss);
+	*shared = rss - 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.9/fs/proc/array.c
===================================================================
--- linux-2.6.9.orig/fs/proc/array.c	2004-12-06 17:23:54.000000000 -0800
+++ linux-2.6.9/fs/proc/array.c	2004-12-10 11:39:00.000000000 -0800
@@ -302,7 +302,7 @@

 static int do_task_stat(struct task_struct *task, char * buffer, int whole)
 {
-	unsigned long vsize, eip, esp, wchan = ~0UL;
+	unsigned long rss, anon_rss, vsize, eip, esp, wchan = ~0UL;
 	long priority, nice;
 	int tty_pgrp = -1, tty_nr = 0;
 	sigset_t sigign, sigcatch;
@@ -325,6 +325,7 @@
 		vsize = task_vsize(mm);
 		eip = KSTK_EIP(task);
 		esp = KSTK_ESP(task);
+		get_rss(mm, &rss, &anon_rss);
 	}

 	get_task_comm(tcomm, task);
@@ -420,7 +421,7 @@
 		jiffies_to_clock_t(task->it_real_value),
 		start_time,
 		vsize,
-		mm ? mm->rss : 0, /* you might want to shift this left 3 */
+		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.9/mm/rmap.c
===================================================================
--- linux-2.6.9.orig/mm/rmap.c	2004-12-10 11:11:26.000000000 -0800
+++ linux-2.6.9/mm/rmap.c	2004-12-10 11:46:07.000000000 -0800
@@ -263,8 +263,6 @@
 	pte_t *pte;
 	int referenced = 0;

-	if (!mm->rss)
-		goto out;
 	address = vma_address(page, vma);
 	if (address == -EFAULT)
 		goto out;
@@ -438,7 +436,10 @@
 	BUG_ON(PageReserved(page));
 	BUG_ON(!anon_vma);

-	vma->vm_mm->anon_rss++;
+	if (current->mm == vma->vm_mm)
+		current->anon_rss++;
+	else
+		vma->vm_mm->anon_rss++;

 	anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON;
 	index = (address - vma->vm_start) >> PAGE_SHIFT;
@@ -510,8 +511,6 @@
 	pte_t pteval;
 	int ret = SWAP_AGAIN;

-	if (!mm->rss)
-		goto out;
 	address = vma_address(page, vma);
 	if (address == -EFAULT)
 		goto out;
@@ -799,8 +798,7 @@
 			if (vma->vm_flags & (VM_LOCKED|VM_RESERVED))
 				continue;
 			cursor = (unsigned long) vma->vm_private_data;
-			while (vma->vm_mm->rss &&
-				cursor < max_nl_cursor &&
+			while (cursor < max_nl_cursor &&
 				cursor < vma->vm_end - vma->vm_start) {
 				try_to_unmap_cluster(cursor, &mapcount, vma);
 				cursor += CLUSTER_SIZE;
Index: linux-2.6.9/kernel/fork.c
===================================================================
--- linux-2.6.9.orig/kernel/fork.c	2004-12-06 17:23:55.000000000 -0800
+++ linux-2.6.9/kernel/fork.c	2004-12-10 11:39:00.000000000 -0800
@@ -151,6 +151,7 @@
 	*tsk = *orig;
 	tsk->thread_info = ti;
 	ti->task = tsk;
+	tsk->rss = 0;

 	/* One for us, one for whoever does the "release_task()" (usually parent) */
 	atomic_set(&tsk->usage,2);
@@ -292,6 +293,7 @@
 	atomic_set(&mm->mm_count, 1);
 	init_rwsem(&mm->mmap_sem);
 	INIT_LIST_HEAD(&mm->mmlist);
+	INIT_LIST_HEAD(&mm->task_list);
 	mm->core_waiters = 0;
 	mm->nr_ptes = 0;
 	spin_lock_init(&mm->page_table_lock);
@@ -323,6 +325,13 @@
 	return mm;
 }

+static void rcu_free_mm(struct rcu_head *head)
+{
+	struct mm_struct *mm = container_of(head ,struct mm_struct, rcu_head);
+
+	free_mm(mm);
+}
+
 /*
  * Called when the last reference to the mm
  * is dropped: either by a lazy thread or by
@@ -333,7 +342,7 @@
 	BUG_ON(mm == &init_mm);
 	mm_free_pgd(mm);
 	destroy_context(mm);
-	free_mm(mm);
+	call_rcu(&mm->rcu_head, rcu_free_mm);
 }

 /*
@@ -400,6 +409,8 @@

 	/* Get rid of any cached register state */
 	deactivate_mm(tsk, mm);
+	if (mm)
+		mm_remove_thread(mm, tsk);

 	/* notify parent sleeping on vfork() */
 	if (vfork_done) {
@@ -447,8 +458,8 @@
 		 * new threads start up in user mode using an mm, which
 		 * allows optimizing out ipis; the tlb_gather_mmu code
 		 * is an example.
+		 * (mm_add_thread does use the ptl .... )
 		 */
-		spin_unlock_wait(&oldmm->page_table_lock);
 		goto good_mm;
 	}

@@ -470,6 +481,7 @@
 		goto free_pt;

 good_mm:
+	mm_add_thread(mm, tsk);
 	tsk->mm = mm;
 	tsk->active_mm = mm;
 	return 0;
Index: linux-2.6.9/mm/memory.c
===================================================================
--- linux-2.6.9.orig/mm/memory.c	2004-12-10 11:12:44.000000000 -0800
+++ linux-2.6.9/mm/memory.c	2004-12-10 11:45:00.000000000 -0800
@@ -1467,8 +1467,10 @@
 		 */
 		page_add_anon_rmap(page, vma, addr);
 		lru_cache_add_active(page);
-		mm->rss++;
-
+		if (current->mm == mm)
+			current->rss++;
+		else
+			mm->rss++;
 	}
 	pte_unmap(page_table);

@@ -1859,3 +1861,49 @@
 }

 #endif
+
+void get_rss(struct mm_struct *mm, unsigned long *rss, unsigned long *anon_rss)
+{
+	struct list_head *y;
+	struct task_struct *t;
+        long rss_sum, anon_rss_sum;
+
+	rcu_read_lock();
+	rss_sum = mm->rss;
+	anon_rss_sum = mm->anon_rss;
+	list_for_each_rcu(y, &mm->task_list) {
+		t = list_entry(y, struct task_struct, mm_tasks);
+		rss_sum += t->rss;
+		anon_rss_sum += t->anon_rss;
+	}
+	if (rss_sum < 0)
+		rss_sum = 0;
+	if (anon_rss_sum < 0)
+		anon_rss_sum = 0;
+	rcu_read_unlock();
+	*rss = rss_sum;
+	*anon_rss = anon_rss_sum;
+}
+
+void mm_remove_thread(struct mm_struct *mm, struct task_struct *tsk)
+{
+	if (!mm)
+		return;
+
+	spin_lock(&mm->page_table_lock);
+	mm->rss += tsk->rss;
+	mm->anon_rss += tsk->anon_rss;
+	list_del_rcu(&tsk->mm_tasks);
+	spin_unlock(&mm->page_table_lock);
+}
+
+void mm_add_thread(struct mm_struct *mm, struct task_struct *tsk)
+{
+	spin_lock(&mm->page_table_lock);
+	tsk->rss = 0;
+	tsk->anon_rss = 0;
+	list_add_rcu(&tsk->mm_tasks, &mm->task_list);
+	spin_unlock(&mm->page_table_lock);
+}
+
+
Index: linux-2.6.9/include/linux/init_task.h
===================================================================
--- linux-2.6.9.orig/include/linux/init_task.h	2004-12-06 17:23:55.000000000 -0800
+++ linux-2.6.9/include/linux/init_task.h	2004-12-10 11:39:00.000000000 -0800
@@ -42,6 +42,7 @@
 	.mmlist		= LIST_HEAD_INIT(name.mmlist),		\
 	.cpu_vm_mask	= CPU_MASK_ALL,				\
 	.default_kioctx = INIT_KIOCTX(name.default_kioctx, name),	\
+	.task_list	= LIST_HEAD_INIT(name.task_list),	\
 }

 #define INIT_SIGNALS(sig) {	\
@@ -112,6 +113,7 @@
 	.proc_lock	= SPIN_LOCK_UNLOCKED,				\
 	.switch_lock	= SPIN_LOCK_UNLOCKED,				\
 	.journal_info	= NULL,						\
+	.mm_tasks	= LIST_HEAD_INIT(tsk.mm_tasks),			\
 }


Index: linux-2.6.9/fs/exec.c
===================================================================
--- linux-2.6.9.orig/fs/exec.c	2004-12-06 17:23:54.000000000 -0800
+++ linux-2.6.9/fs/exec.c	2004-12-10 11:39:00.000000000 -0800
@@ -543,6 +543,7 @@
 	active_mm = tsk->active_mm;
 	tsk->mm = mm;
 	tsk->active_mm = mm;
+	mm_add_thread(mm, current);
 	activate_mm(active_mm, mm);
 	task_unlock(tsk);
 	arch_pick_mmap_layout(mm);
Index: linux-2.6.9/fs/aio.c
===================================================================
--- linux-2.6.9.orig/fs/aio.c	2004-12-06 17:23:54.000000000 -0800
+++ linux-2.6.9/fs/aio.c	2004-12-10 11:39:00.000000000 -0800
@@ -575,6 +575,7 @@
 	atomic_inc(&mm->mm_count);
 	tsk->mm = mm;
 	tsk->active_mm = mm;
+	mm_add_thread(mm, tsk);
 	activate_mm(active_mm, mm);
 	task_unlock(tsk);

@@ -597,6 +598,7 @@
 	struct task_struct *tsk = current;

 	task_lock(tsk);
+	mm_remove_thread(mm,tsk);
 	tsk->flags &= ~PF_BORROWED_MM;
 	tsk->mm = NULL;
 	/* active_mm is still 'mm' */

  parent reply	other threads:[~2004-12-10 20:05 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                                                                                 ` page fault scalability patch V16 [2/4]: mm counter macros Christoph Lameter
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                                     ` Christoph Lameter [this message]
2004-12-10 21:24                                       ` pfault V12 : correction to tasklist rss 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.0412101150490.9169@schroedinger.engr.sgi.com \
    --to=clameter@sgi.com \
    --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).