From: Christoph Lameter <clameter@sgi.com>
To: nickpiggin@yahoo.com.au
Cc: Jeff Garzik <jgarzik@pobox.com>,
torvalds@osdl.org, hugh@veritas.com, benh@kernel.crashing.org,
linux-mm@kvack.org, linux-ia64@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Anticipatory prefaulting in the page fault handler V1
Date: Wed, 8 Dec 2004 09:24:06 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.58.0412080920240.27156@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <20041202101029.7fe8b303.cliffw@osdl.org>
The page fault handler for anonymous pages can generate significant overhead
apart from its essential function which is to clear and setup a new page
table entry for a never accessed memory location. This overhead increases
significantly in an SMP environment.
In the page table scalability patches, we addressed the issue by changing
the locking scheme so that multiple fault handlers are able to be processed
concurrently on multiple cpus. This patch attempts to aggregate multiple
page faults into a single one. It does that by noting
anonymous page faults generated in sequence by an application.
If a fault occurred for page x and is then followed by page x+1 then it may
be reasonable to expect another page fault at x+2 in the future. If page
table entries for x+1 and x+2 would be prepared in the fault handling for
page x+1 then the overhead of taking a fault for x+2 is avoided. However
page x+2 may never be used and thus we may have increased the rss
of an application unnecessarily. The swapper will take care of removing
that page if memory should get tight.
The following patch makes the anonymous fault handler anticipate future
faults. For each fault a prediction is made where the fault would occur
(assuming linear acccess by the application). If the prediction turns out to
be right (next fault is where expected) then a number of pages is
preallocated in order to avoid a series of future faults. The order of the
preallocation increases by the power of two for each success in sequence.
The first successful prediction leads to an additional page being allocated.
Second successful prediction leads to 2 additional pages being allocated.
Third to 4 pages and so on. The max order is 3 by default. In a large
continous allocation the number of faults is reduced by a factor of 8.
The patch may be combined with the page fault scalability patch (another
edition of the patch is needed which will be forthcoming after the
page fault scalability patch has been included). The combined patches
will triple the possible page fault rate from ~1 mio faults sec to 3 mio
faults sec.
Standard Kernel on a 512 Cpu machine allocating 32GB with an increasing
number of threads (and thus increasing parallellism of page faults):
Gb Rep Threads User System Wall flt/cpu/s fault/wsec
32 3 1 1.416s 138.165s 139.050s 45073.831 45097.498
32 3 2 1.397s 148.523s 78.044s 41965.149 80201.646
32 3 4 1.390s 152.618s 44.044s 40851.258 141545.239
32 3 8 1.500s 374.008s 53.001s 16754.519 118671.950
32 3 16 1.415s 1051.759s 73.094s 5973.803 85087.358
32 3 32 1.867s 3400.417s 117.003s 1849.186 53754.928
32 3 64 5.361s 11633.040s 197.034s 540.577 31881.112
32 3 128 23.387s 39386.390s 332.055s 159.642 18918.599
32 3 256 15.409s 20031.450s 168.095s 313.837 37237.918
32 3 512 18.720s 10338.511s 86.047s 607.446 72752.686
Patched kernel:
Gb Rep Threads User System Wall flt/cpu/s fault/wsec
32 3 1 1.098s 138.544s 139.063s 45053.657 45057.920
32 3 2 1.022s 127.770s 67.086s 48849.350 92707.085
32 3 4 0.995s 119.666s 37.045s 52141.503 167955.292
32 3 8 0.928s 87.400s 18.034s 71227.407 342934.242
32 3 16 1.067s 72.943s 11.035s 85007.293 553989.377
32 3 32 1.248s 133.753s 10.038s 46602.680 606062.151
32 3 64 5.557s 438.634s 13.093s 14163.802 451418.617
32 3 128 17.860s 1496.797s 19.048s 4153.714 322808.509
32 3 256 13.382s 766.063s 10.016s 8071.695 618816.838
32 3 512 17.067s 369.106s 5.041s 16291.764 1161285.521
These number are roughly equal to what can be accomplished with the
page fault scalability patches.
Kernel patches with both the page fault scalability patches and
prefaulting:
Gb Rep Threads User System Wall flt/cpu/s fault/wsec
32 10 1 4.103s 456.384s 460.046s 45541.992 45544.369
32 10 2 4.005s 415.119s 221.095s 50036.407 94484.174
32 10 4 3.855s 371.317s 111.076s 55898.259 187635.724
32 10 8 3.902s 308.673s 67.094s 67092.476 308634.397
32 10 16 4.011s 224.213s 37.016s 91889.781 564241.062
32 10 32 5.483s 209.391s 27.046s 97598.647 763495.417
32 10 64 19.166s 219.925s 26.030s 87713.212 797286.395
32 10 128 53.482s 342.342s 27.024s 52981.744 769687.791
32 10 256 67.334s 180.321s 15.036s 84679.911 1364614.334
32 10 512 66.516s 93.098s 9.015s131387.893 2291548.865
The fault rate doubles when both patches are applied.
And on the high end (512 processors allocating 256G) (No numbers
for regular kernels because they are extremely slow, also no
number for a low number of threads. Also very slow)
With prefaulting:
Gb Rep Threads User System Wall flt/cpu/s fault/wsec
256 3 4 8.241s 1414.348s 449.016s 35380.301 112056.239
256 3 8 8.306s 1300.982s 247.025s 38441.977 203559.271
256 3 16 8.368s 1223.853s 154.089s 40846.272 324940.924
256 3 32 8.536s 1284.041s 110.097s 38938.970 453556.624
256 3 64 13.025s 3587.203s 110.010s 13980.123 457131.492
256 3 128 25.025s 11460.700s 145.071s 4382.104 345404.909
256 3 256 26.150s 6061.649s 75.086s 8267.625 663414.482
256 3 512 20.637s 3037.097s 38.062s 16460.435 1302993.019
Page fault scalability patch and prefaulting. Max prefault order
increased to 5 (max preallocation of 32 pages):
Gb Rep Threads User System Wall flt/cpu/s fault/wsec
256 10 8 33.571s 4516.293s 863.021s 36874.099 194356.930
256 10 16 33.103s 3737.688s 461.028s 44492.553 363704.484
256 10 32 35.094s 3436.561s 321.080s 48326.262 521352.840
256 10 64 46.675s 2899.997s 245.020s 56936.124 684214.256
256 10 128 85.493s 2890.198s 203.008s 56380.890 826122.524
256 10 256 74.299s 1374.973s 99.088s115762.963 1679630.272
256 10 512 62.760s 706.559s 53.027s218078.311 3149273.714
We are getting into an almost linear scalability in the high end with
both patches and end up with a fault rate > 3 mio faults per second.
The one thing that takes up a lot of time is still be the zeroing
of pages in the page fault handler. There is a another
set of patches that I am working on which will prezero pages
and led to another an increase in performance by a factor of 2-4
(if prezeroed pages are available which may not always be the case).
Maybe we can reach 10 mio fault /sec that way.
Patch against 2.6.10-rc3-bk3:
Index: linux-2.6.9/include/linux/sched.h
===================================================================
--- linux-2.6.9.orig/include/linux/sched.h 2004-12-01 10:37:31.000000000 -0800
+++ linux-2.6.9/include/linux/sched.h 2004-12-01 10:38:15.000000000 -0800
@@ -537,6 +537,8 @@
#endif
struct list_head tasks;
+ unsigned long anon_fault_next_addr; /* Predicted sequential fault address */
+ int anon_fault_order; /* Last order of allocation on fault */
/*
* ptrace_list/ptrace_children forms the list of my children
* that were stolen by a ptracer.
Index: linux-2.6.9/mm/memory.c
===================================================================
--- linux-2.6.9.orig/mm/memory.c 2004-12-01 10:38:11.000000000 -0800
+++ linux-2.6.9/mm/memory.c 2004-12-01 10:45:01.000000000 -0800
@@ -55,6 +55,7 @@
#include <linux/swapops.h>
#include <linux/elf.h>
+#include <linux/pagevec.h>
#ifndef CONFIG_DISCONTIGMEM
/* use the per-pgdat data instead for discontigmem - mbligh */
@@ -1432,8 +1433,106 @@
unsigned long addr)
{
pte_t entry;
- struct page * page = ZERO_PAGE(addr);
+ struct page * page;
+
+ addr &= PAGE_MASK;
+
+ if (current->anon_fault_next_addr == addr) {
+ unsigned long end_addr;
+ int order = current->anon_fault_order;
+
+ /* Sequence of page faults detected. Perform preallocation of pages */
+ /* The order of preallocations increases with each successful prediction */
+ order++;
+
+ if ((1 << order) < PAGEVEC_SIZE)
+ end_addr = addr + (1 << (order + PAGE_SHIFT));
+ else
+ end_addr = addr + PAGEVEC_SIZE * PAGE_SIZE;
+
+ if (end_addr > vma->vm_end)
+ end_addr = vma->vm_end;
+ if ((addr & PMD_MASK) != (end_addr & PMD_MASK))
+ end_addr &= PMD_MASK;
+
+ current->anon_fault_next_addr = end_addr;
+ current->anon_fault_order = order;
+
+ if (write_access) {
+
+ struct pagevec pv;
+ unsigned long a;
+ struct page **p;
+
+ pte_unmap(page_table);
+ spin_unlock(&mm->page_table_lock);
+
+ pagevec_init(&pv, 0);
+
+ if (unlikely(anon_vma_prepare(vma)))
+ return VM_FAULT_OOM;
+
+ /* Allocate the necessary pages */
+ for(a = addr;a < end_addr ; a += PAGE_SIZE) {
+ struct page *p = alloc_page_vma(GFP_HIGHUSER, vma, a);
+
+ if (p) {
+ clear_user_highpage(p, a);
+ pagevec_add(&pv,p);
+ } else
+ break;
+ }
+ end_addr = a;
+
+ spin_lock(&mm->page_table_lock);
+
+ for(p = pv.pages; addr < end_addr; addr += PAGE_SIZE, p++) {
+
+ page_table = pte_offset_map(pmd, addr);
+ if (!pte_none(*page_table)) {
+ /* Someone else got there first */
+ page_cache_release(*p);
+ pte_unmap(page_table);
+ continue;
+ }
+
+ entry = maybe_mkwrite(pte_mkdirty(mk_pte(*p,
+ vma->vm_page_prot)),
+ vma);
+
+ mm->rss++;
+ lru_cache_add_active(*p);
+ mark_page_accessed(*p);
+ page_add_anon_rmap(*p, vma, addr);
+
+ set_pte(page_table, entry);
+ pte_unmap(page_table);
+
+ /* No need to invalidate - it was non-present before */
+ update_mmu_cache(vma, addr, entry);
+ }
+ } else {
+ /* Read */
+ for(;addr < end_addr; addr += PAGE_SIZE) {
+ page_table = pte_offset_map(pmd, addr);
+ entry = pte_wrprotect(mk_pte(ZERO_PAGE(addr), vma->vm_page_prot));
+ set_pte(page_table, entry);
+ pte_unmap(page_table);
+
+ /* No need to invalidate - it was non-present before */
+ update_mmu_cache(vma, addr, entry);
+
+ };
+ }
+ spin_unlock(&mm->page_table_lock);
+ return VM_FAULT_MINOR;
+ }
+
+ current->anon_fault_next_addr = addr + PAGE_SIZE;
+ current->anon_fault_order = 0;
+
+ page = ZERO_PAGE(addr);
/* Read-only mapping of ZERO_PAGE. */
entry = pte_wrprotect(mk_pte(ZERO_PAGE(addr), vma->vm_page_prot));
next prev parent reply other threads:[~2004-12-08 17:24 UTC|newest]
Thread overview: 289+ 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 ` Christoph Lameter [this message]
2004-12-08 17:33 ` Anticipatory prefaulting in the page fault handler V1 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
2004-12-08 17:44 Anticipatory prefaulting in the page fault handler V1 Luck, Tony
2004-12-08 17:57 ` Christoph Lameter
2004-12-08 18:31 Luck, Tony
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.0412080920240.27156@schroedinger.engr.sgi.com \
--to=clameter@sgi.com \
--cc=benh@kernel.crashing.org \
--cc=hugh@veritas.com \
--cc=jgarzik@pobox.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).