public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Christoph Lameter <clameter@sgi.com>
Cc: Andrew Morton <akpm@osdl.org>,
	William Lee Irwin III <wli@holomorphy.com>,
	"David S. Miller" <davem@redhat.com>,
	raybry@sgi.com, ak@muc.de, manfred@colorfullife.com,
	linux-ia64@vger.kernel.org,
	Linux Kernel list <linux-kernel@vger.kernel.org>,
	vrajesh@umich.edu, hugh@veritas.com
Subject: Re: page fault scalability patch final : i386 tested, x86_64
Date: Wed, 01 Sep 2004 04:24:50 +0000	[thread overview]
Message-ID: <1094012689.6538.330.camel@gaston> (raw)
In-Reply-To: <Pine.LNX.4.58.0408271616001.14712@schroedinger.engr.sgi.com>

On Sat, 2004-08-28 at 09:20, Christoph Lameter wrote:
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
> 
> This is the fifth (and hopefully final) release of the page fault
> scalability patches. The scalability patches avoid locking during the
> creation of page table entries for anonymous memory in a threaded
> application. The performance increases significantly for more than 2
> threads running concurrently.

Sorry for "waking up" late on this one but we've been kept busy by
a lot of other things.

The removal of the page table lock has other more subtle side effects
on ppc64 (and ppc32 too) that aren't trivial to solve. Typically, due
to the way we use the hash table as a TLB cache.

For example, out ptep_test_and_clear will first clear the PTE and then
flush the hash table entry. If in the meantime another CPU gets in,
takes a fault, re-populates the PTE and fills the hash table via
update_mmu_cache, we may end up with 2 hash PTEs for the same linux
PTE at least for a short while. This is a potential cause of checkstop
on ppc CPUs.

There may be other subtle races of that sort I haven't encovered yet.

We need to spend more time on our (ppc/ppc64) side to figure out what
is the extent of the problem. We may have a cheap way to fix most of the
issues using the PAGE_BUSY bit we have in the PTEs as a lock, but we
don't have that facility on ppc32.

I think there wouldn't be a problem if we could guarantee exclusion
between page fault and clearing of a PTE (that is basically having the
swapper take the mm write sem) but I don't think that's realistic, oh
well, not that I understand anything about the swap code anyways...

Ben.



  parent reply	other threads:[~2004-09-01  4:24 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-15 13:50 page fault fastpath: Increasing SMP scalability by introducing pte Christoph Lameter
2004-08-15 20:09 ` page fault fastpath: Increasing SMP scalability by introducing David S. Miller
2004-08-15 22:58   ` Christoph Lameter
2004-08-15 23:58     ` David S. Miller
2004-08-16  0:11       ` Christoph Lameter
2004-08-16  1:56         ` David S. Miller
2004-08-16  3:29           ` Christoph Lameter
2004-08-16  6:59             ` Ray Bryant
2004-08-16 15:18               ` Christoph Lameter
2004-08-16 16:18                 ` page fault fastpath: Increasing SMP scalability by introducing pte locks? William Lee Irwin III
2004-08-16 14:39             ` William Lee Irwin III
2004-08-17 15:28               ` page fault fastpath patch v2: fix race conditions, stats for 8,32 Christoph Lameter
2004-08-17 15:37                 ` page fault fastpath patch v2: fix race conditions, stats for 8,32 and 512 cpu SMP Christoph Hellwig
2004-08-17 15:51                 ` William Lee Irwin III
2004-08-18 17:55                 ` page fault fastpath patch v2: fix race conditions, stats for 8,32 Hugh Dickins
2004-08-18 20:20                   ` page fault fastpath patch v2: fix race conditions, stats for 8,32 and 512 cpu SMP William Lee Irwin III
2004-08-19  1:19                   ` page fault fastpath patch v2: fix race conditions, stats for Christoph Lameter
     [not found]               ` <B6E8046E1E28D34EB815A11AC8CA3129027B679F@mtv-atc-605e--n.corp.sgi.com>
2004-08-24  4:43                 ` page fault scalability patch v3: use cmpxchg, make rss atomic Christoph Lameter
2004-08-24  5:49                   ` Christoph Lameter
2004-08-24 12:34                     ` Matthew Wilcox
2004-08-24 14:47                       ` Christoph Lameter
     [not found]                 ` <B6E8046E1E28D34EB815A11AC8CA3129027B67A9@mtv-atc-605e--n.corp.sgi.com>
2004-08-26 15:20                   ` page fault scalability patch v4: reduce page_table_lock use, atomic Christoph Lameter
     [not found]                   ` <B6E8046E1E28D34EB815A11AC8CA3129027B67B4@mtv-atc-605e--n.corp.sgi.com>
2004-08-27 23:20                     ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-08-27 23:36                       ` page fault scalability patch final : i386 tested, x86_64 support added Andi Kleen
2004-08-27 23:43                         ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-08-28  0:19                         ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-08-28  0:23                           ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-08-28  0:36                             ` Andrew Morton
2004-08-28  0:40                               ` David S. Miller
2004-08-28  1:05                                 ` page fault scalability patch final : i386 tested, x86_64 support added Andi Kleen
2004-08-28  1:11                                   ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-08-28  1:17                                     ` page fault scalability patch final : i386 tested, x86_64 support added Andi Kleen
2004-08-28  1:02                               ` Andi Kleen
2004-08-28  1:39                                 ` page fault scalability patch final : i386 tested, x86_64 Andrew Morton
2004-08-28  2:08                                   ` Paul Mackerras
2004-08-28  3:32                                     ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-08-28  3:42                                       ` page fault scalability patch final : i386 tested, x86_64 Andrew Morton
2004-08-28  4:24                                         ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-08-28  5:39                                           ` page fault scalability patch final : i386 tested, x86_64 Andrew Morton
2004-08-28  5:58                                             ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-08-28  6:03                                               ` page fault scalability patch final : i386 tested, x86_64 support added William Lee Irwin III
2004-08-28  6:06                                               ` page fault scalability patch final : i386 tested, x86_64 Andrew Morton
2004-08-30 17:02                                                 ` page fault scalability patch final : i386 tested, x86_64 support added Herbert Poetzl
2004-08-30 17:05                                                   ` Andi Kleen
2004-08-28 13:19                                             ` page fault scalability patch final : i386 tested, x86_64 Andi Kleen
2004-08-28 15:48                                             ` page fault scalability patch final : i386 tested, x86_64 support added Matt Mackall
2004-09-01  4:13                                             ` page fault scalability patch final : i386 tested, x86_64 Benjamin Herrenschmidt
2004-09-02 21:26                                               ` page fault scalability patch final : i386 tested, x86_64 support added Andi Kleen
2004-09-02 21:55                                                 ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-08-28 21:41                                 ` page fault scalability patch final : i386 tested, x86_64 support added Daniel Phillips
2004-09-01  4:24                       ` Benjamin Herrenschmidt [this message]
2004-09-01  5:22                         ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-09-01 16:43                         ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-09-01 23:09                           ` page fault scalability patch final : i386 tested, x86_64 Benjamin Herrenschmidt
     [not found]                             ` <Pine.LNX.4.58.0409012140440.23186@schroedinger.engr.sgi.com>
     [not found]                               ` <20040901215741.3538bbf4.davem@davemloft.net>
2004-09-02  5:18                                 ` page fault scalability patch final : i386 tested, x86_64 support added William Lee Irwin III
2004-09-09 15:38                                   ` page fault scalability patch: V7 (+fallback for atomic page table Christoph Lameter
2004-09-02 16:24                                 ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-09-02 20:10                                   ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-09-02 21:02                                     ` page fault scalability patch final : i386 tested, x86_64 support Christoph Lameter
2004-09-02 21:07                                       ` page fault scalability patch final : i386 tested, x86_64 David S. Miller
2004-09-18 23:23                                         ` page fault scalability patch V8: [0/7] Description Christoph Lameter
     [not found]                                         ` <B6E8046E1E28D34EB815A11AC8CA312902CD3243@mtv-atc-605e--n.corp.sgi.com>
2004-09-18 23:24                                           ` page fault scalability patch V8: [1/7] make mm->rss atomic Christoph Lameter
2004-09-18 23:26                                           ` page fault scalability patch V8: [2/7] avoid page_table_lock in Christoph Lameter
2004-09-19  9:04                                             ` page fault scalability patch V8: [2/7] avoid page_table_lock in handle_mm_fault Christoph Hellwig
2004-09-18 23:27                                           ` page fault scalability patch V8: [3/7] atomic pte operations for Christoph Lameter
2004-09-18 23:28                                           ` page fault scalability patch V8: [4/7] universally available cmpxchg Christoph Lameter
     [not found]                                             ` <200409191430.37444.vda@port.imtp.ilyichevsk.odessa.ua>
2004-09-19 12:11                                               ` page fault scalability patch V8: [4/7] universally available cmpxchg on i386 Andi Kleen
2004-09-20 15:45                                               ` page fault scalability patch V8: [4/7] universally available Christoph Lameter
     [not found]                                                 ` <200409202043.00580.vda@port.imtp.ilyichevsk.odessa.ua>
2004-09-20 20:49                                                   ` Christoph Lameter
2004-09-20 20:57                                                     ` page fault scalability patch V8: [4/7] universally available cmpxchg on i386 Andi Kleen
     [not found]                                                       ` <200409211841.25507.vda@port.imtp.ilyichevsk.odessa.ua>
2004-09-21 15:45                                                         ` Andi Kleen
     [not found]                                                           ` <200409212306.38800.vda@port.imtp.ilyichevsk.odessa.ua>
2004-09-21 20:14                                                             ` Andi Kleen
2004-09-23  7:17                                                           ` page fault scalability patch V8: [4/7] universally available Andy Lutomirski
2004-09-23  9:03                                                             ` page fault scalability patch V8: [4/7] universally available cmpxchg on i386 Andi Kleen
     [not found]                                                               ` <Pine.LNX.4.58.0409271204180.31769@schroedinger.engr.sgi.com>
2004-10-15 19:02                                                                 ` page fault scalability patch V10: [0/7] overview Christoph Lameter
2004-10-15 19:03                                                                   ` page fault scalability patch V10: [1/7] make rss atomic Christoph Lameter
2004-10-15 19:04                                                                   ` page fault scalability patch V10: [2/7] defer/omit taking page_table_lock Christoph Lameter
2004-10-15 20:00                                                                     ` Marcelo Tosatti
2004-10-18 15:59                                                                       ` page fault scalability patch V10: [2/7] defer/omit taking Christoph Lameter
2004-10-19  5:25                                                                       ` [revised] " Christoph Lameter
2004-10-15 19:05                                                                   ` page fault scalability patch V10: [3/7] IA64 atomic pte operations Christoph Lameter
2004-10-15 19:06                                                                   ` page fault scalability patch V10: [4/7] cmpxchg for 386 and 486 Christoph Lameter
2004-10-15 19:06                                                                   ` page fault scalability patch V10: [5/7] i386 atomic pte operations Christoph Lameter
2004-10-15 19:07                                                                   ` page fault scalability patch V10: [6/7] x86_64 " Christoph Lameter
2004-10-15 19:08                                                                   ` page fault scalability patch V10: [7/7] s/390 " Christoph Lameter
2004-09-18 23:29                                           ` page fault scalability patch V8: [5/7] atomic pte operations for Christoph Lameter
2004-09-18 23:30                                           ` page fault scalability patch V8: [6/7] " Christoph Lameter
2004-09-18 23:31                                           ` page fault scalability patch V8: [7/7] " Christoph Lameter
     [not found]                                             ` <200409191435.09445.vda@port.imtp.ilyichevsk.odessa.ua>
2004-09-20 15:44                                               ` page fault scalability patch V8: [7/7] atomic pte operations Christoph Lameter
2004-08-15 22:38 ` page fault fastpath: Increasing SMP scalability by introducing Benjamin Herrenschmidt
2004-08-16 17:28   ` Christoph Lameter
2004-08-17  8:01     ` Benjamin Herrenschmidt

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=1094012689.6538.330.camel@gaston \
    --to=benh@kernel.crashing.org \
    --cc=ak@muc.de \
    --cc=akpm@osdl.org \
    --cc=clameter@sgi.com \
    --cc=davem@redhat.com \
    --cc=hugh@veritas.com \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=manfred@colorfullife.com \
    --cc=raybry@sgi.com \
    --cc=vrajesh@umich.edu \
    --cc=wli@holomorphy.com \
    /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