From: Andrew Morton <akpm@osdl.org>
To: Christoph Lameter <clameter@sgi.com>
Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org
Subject: Re: Page fault scalability patch V18: Drop first acquisition of ptl
Date: Thu, 03 Mar 2005 04:56:12 +0000 [thread overview]
Message-ID: <20050302205612.451d220b.akpm@osdl.org> (raw)
In-Reply-To: <Pine.LNX.4.58.0503022021150.3816@schroedinger.engr.sgi.com>
Christoph Lameter <clameter@sgi.com> wrote:
>
> > > The cmpxchg will fail if that happens.
> >
> > How about if someone does remap_file_pages() against that virtual address
> > and that syscalls happens to pick the same physical page? We have the same
> > physical page at the same pte slot with different contents, and the cmpxchg
> > will succeed.
>
> Any mmap changes requires the mmapsem.
sys_remap_file_pages() will call install_page() under down_read(mmap_sem).
It relies upon page_table_lock for pte atomicity.
> > > http://marc.theaimsgroup.com/?l=linux-kernel&m\x110272296503539&w=2
> >
> > Those are different cases. I still don't see why the change is justified in
> > do_swap_page().
>
> Lets undo that then.
OK.
> > > These architectures have the atomic pte's not enable. It would require
> > > them to submit a patch to activate atomic pte's for these architectures.
> >
> >
> > But if the approach which these patches take is not suitable for these
> > architectures then they have no solution to the scalability problem. The
> > machines will perform suboptimally and more (perhaps conflicting)
> > development will be needed.
>
> They can implement their own approach with the provided hooks. You could
> for example use SSE / MMX for atomic 64 bit ops on i386 with PAE mode by
> using the start/stop macros to deal with the floatingh point issues.
Have the ppc64 and sparc64 people reviewed and acked the change? (Not a
facetious question - I just haven't been following the saga sufficiently
closely to remember).
> > > One
> > > would have to check for the lock being active leading to significant code
> > > changes.
> >
> > Why?
>
> Because if a pte is locked it should not be used.
Confused. Why not just spin on the lock in the normal manner?
> Look this is an endless discussion with new things brought up at every
> corner and I have reworked the patches numerous times. Could you tell me
> some step by step way that we can finally deal with this? Specify a
> sequence of patches and I will submit them to you step by step.
No, I couldn't do that - that's what the collective brain is for.
Look, I'm sorry, but this patch is highly atypical. Few have this much
trouble. I have queazy feeling about it (maybe too low-level locking,
maybe inappropriate to other architectures, only addresses a subset of
workloads on a tiny subset of machines, doesn't seem to address all uses of
the lock, etc) and I know that others have had, and continue to have
similar feelings. But if we could think of anything better, we'd have said
so :( It's a diffucult problem.
If the other relvant architecture people say "we can use this" then perhaps
we should grin and bear it. But one does wonder whether some more sweeping
design change is needed.
next prev parent reply other threads:[~2005-03-03 4:56 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-02 3:49 Page fault scalability patch V18: Overview Christoph Lameter
2005-03-02 3:50 ` Page fault scalability patch V18: atomic pte ops, pte_cmpxchg Christoph Lameter
2005-03-02 3:51 ` Page fault scalability patch V18: abstract rss counter ops Christoph Lameter
2005-03-02 3:51 ` Page fault scalability patch V18: Drop first acquisition of ptl Christoph Lameter
2005-03-03 1:45 ` Andrew Morton
2005-03-03 2:13 ` Christoph Lameter
2005-03-03 2:55 ` Andrew Morton
2005-03-03 3:17 ` Christoph Lameter
2005-03-03 4:14 ` Andrew Morton
2005-03-03 4:27 ` Christoph Lameter
2005-03-03 4:56 ` Andrew Morton [this message]
2005-03-03 5:17 ` Christoph Lameter
2005-03-03 5:37 ` Andrew Morton
2005-03-03 5:48 ` Christoph Lameter
2005-03-03 6:13 ` Christoph Lameter
2005-03-03 6:20 ` Andrew Morton
2005-03-03 16:54 ` Christoph Lameter
2005-03-03 21:20 ` Andrew Morton
2005-03-03 22:14 ` Christoph Lameter
2005-03-04 16:44 ` Christoph Lameter
2005-03-04 17:09 ` Hugh Dickins
2005-03-04 18:29 ` Christoph Lameter
2005-03-04 19:08 ` Hugh Dickins
2005-03-31 6:55 ` Avoid spurious page faults by avoiding pte_clear -> set pte Christoph Lameter
2005-03-04 16:46 ` Page fault scalability patch V18: Drop first acquisition of ptl Christoph Lameter
2005-03-03 5:00 ` Paul Mackerras
2005-03-03 5:19 ` Christoph Lameter
2005-03-03 5:38 ` David S. Miller
2005-03-03 5:51 ` Christoph Lameter
2005-03-03 6:11 ` Benjamin Herrenschmidt
2005-03-03 16:52 ` Christoph Lameter
2005-03-03 5:54 ` Benjamin Herrenschmidt
2005-03-03 6:37 ` Nick Piggin
2005-03-03 6:30 ` Benjamin Herrenschmidt
2005-03-03 7:44 ` Nick Piggin
2005-03-03 17:43 ` David S. Miller
2005-03-03 5:24 ` Nick Piggin
2005-03-02 3:52 ` Page fault scalability patch V18: No page table lock in do_anonymous_page Christoph Lameter
2005-03-04 2:18 ` Page fault scalability patch V18: Overview Darren Williams
2005-03-04 2:47 ` Darren Williams
2005-03-04 16:15 ` Christoph Lameter
2005-03-06 21:49 ` Darren Williams
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=20050302205612.451d220b.akpm@osdl.org \
--to=akpm@osdl.org \
--cc=clameter@sgi.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.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