From: Andrea Arcangeli <andrea@qumranet.com>
To: Robin Holt <holt@sgi.com>
Cc: Christoph Lameter <clameter@sgi.com>,
Jack Steiner <steiner@sgi.com>, Avi Kivity <avi@qumranet.com>,
Izik Eidus <izike@qumranet.com>, Nick Piggin <npiggin@suse.de>,
kvm-devel@lists.sourceforge.net,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
daniel.blueman@quadrics.com, Hugh Dickins <hugh@veritas.com>
Subject: Re: [patch 1/6] mmu_notifier: Core code
Date: Thu, 31 Jan 2008 00:38:03 +0100 [thread overview]
Message-ID: <20080130233803.GB7185@v2.random> (raw)
In-Reply-To: <20080130222035.GX26420@sgi.com>
On Wed, Jan 30, 2008 at 04:20:35PM -0600, Robin Holt wrote:
> On Wed, Jan 30, 2008 at 11:19:28AM -0800, Christoph Lameter wrote:
> > On Wed, 30 Jan 2008, Jack Steiner wrote:
> >
> > > Moving to a different lock solves the problem.
> >
> > Well it gets us back to the issue why we removed the lock. As Robin said
> > before: If its global then we can have a huge number of tasks contending
> > for the lock on startup of a process with a large number of ranks. The
> > reason to go to mmap_sem was that it was placed in the mm_struct and so we
> > would just have a couple of contentions per mm_struct.
> >
> > I'll be looking for some other way to do this.
>
> I think Andrea's original concept of the lock in the mmu_notifier_head
> structure was the best. I agree with him that it should be a spinlock
> instead of the rw_lock.
BTW, I don't see the scalability concern with huge number of tasks:
the lock is still in the mm, down_write(mm->mmap_sem); oneinstruction;
up_write(mm->mmap_sem) is always going to scale worse than
spin_lock(mm->somethingelse); oneinstruction;
spin_unlock(mm->somethinglese).
Furthermore if we go this route and we don't relay on implicit
serialization of all the mmu notifier users against exit_mmap
(i.e. the mmu notifier user must agree to stop calling
mmu_notifier_register on a mm after the last mmput) the autodisarming
feature will likely have to be removed or it can't possibly be safe to
run mmu_notifier_unregister while mmu_notifier_release runs. With the
auto-disarming feature, there is no way to safely know if
mmu_notifier_unregister has to be called or not. I'm ok with removing
the auto-disarming feature and to have as self-contained-as-possible
locking. Then mmu_notifier_release can just become the
invalidate_all_after and invalidate_all, invalidate_all_before.
WARNING: multiple messages have this Message-ID (diff)
From: Andrea Arcangeli <andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Robin Holt <holt-sJ/iWh9BUns@public.gmane.org>
Cc: Nick Piggin <npiggin-l3A5Bk7waGM@public.gmane.org>,
Peter Zijlstra
<a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org>,
linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
Benjamin Herrenschmidt
<benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>,
Jack Steiner <steiner-sJ/iWh9BUns@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
daniel.blueman-xqY44rlHlBpWk0Htik3J/w@public.gmane.org,
Hugh Dickins <hugh-DTz5qymZ9yRBDgjK7y7TUQ@public.gmane.org>,
Christoph Lameter <clameter-sJ/iWh9BUns@public.gmane.org>
Subject: Re: [patch 1/6] mmu_notifier: Core code
Date: Thu, 31 Jan 2008 00:38:03 +0100 [thread overview]
Message-ID: <20080130233803.GB7185@v2.random> (raw)
In-Reply-To: <20080130222035.GX26420-sJ/iWh9BUns@public.gmane.org>
On Wed, Jan 30, 2008 at 04:20:35PM -0600, Robin Holt wrote:
> On Wed, Jan 30, 2008 at 11:19:28AM -0800, Christoph Lameter wrote:
> > On Wed, 30 Jan 2008, Jack Steiner wrote:
> >
> > > Moving to a different lock solves the problem.
> >
> > Well it gets us back to the issue why we removed the lock. As Robin said
> > before: If its global then we can have a huge number of tasks contending
> > for the lock on startup of a process with a large number of ranks. The
> > reason to go to mmap_sem was that it was placed in the mm_struct and so we
> > would just have a couple of contentions per mm_struct.
> >
> > I'll be looking for some other way to do this.
>
> I think Andrea's original concept of the lock in the mmu_notifier_head
> structure was the best. I agree with him that it should be a spinlock
> instead of the rw_lock.
BTW, I don't see the scalability concern with huge number of tasks:
the lock is still in the mm, down_write(mm->mmap_sem); oneinstruction;
up_write(mm->mmap_sem) is always going to scale worse than
spin_lock(mm->somethingelse); oneinstruction;
spin_unlock(mm->somethinglese).
Furthermore if we go this route and we don't relay on implicit
serialization of all the mmu notifier users against exit_mmap
(i.e. the mmu notifier user must agree to stop calling
mmu_notifier_register on a mm after the last mmput) the autodisarming
feature will likely have to be removed or it can't possibly be safe to
run mmu_notifier_unregister while mmu_notifier_release runs. With the
auto-disarming feature, there is no way to safely know if
mmu_notifier_unregister has to be called or not. I'm ok with removing
the auto-disarming feature and to have as self-contained-as-possible
locking. Then mmu_notifier_release can just become the
invalidate_all_after and invalidate_all, invalidate_all_before.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
WARNING: multiple messages have this Message-ID (diff)
From: Andrea Arcangeli <andrea@qumranet.com>
To: Robin Holt <holt@sgi.com>
Cc: Christoph Lameter <clameter@sgi.com>,
Jack Steiner <steiner@sgi.com>, Avi Kivity <avi@qumranet.com>,
Izik Eidus <izike@qumranet.com>, Nick Piggin <npiggin@suse.de>,
kvm-devel@lists.sourceforge.net,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
daniel.blueman@quadrics.com, Hugh Dickins <hugh@veritas.com>
Subject: Re: [patch 1/6] mmu_notifier: Core code
Date: Thu, 31 Jan 2008 00:38:03 +0100 [thread overview]
Message-ID: <20080130233803.GB7185@v2.random> (raw)
In-Reply-To: <20080130222035.GX26420@sgi.com>
On Wed, Jan 30, 2008 at 04:20:35PM -0600, Robin Holt wrote:
> On Wed, Jan 30, 2008 at 11:19:28AM -0800, Christoph Lameter wrote:
> > On Wed, 30 Jan 2008, Jack Steiner wrote:
> >
> > > Moving to a different lock solves the problem.
> >
> > Well it gets us back to the issue why we removed the lock. As Robin said
> > before: If its global then we can have a huge number of tasks contending
> > for the lock on startup of a process with a large number of ranks. The
> > reason to go to mmap_sem was that it was placed in the mm_struct and so we
> > would just have a couple of contentions per mm_struct.
> >
> > I'll be looking for some other way to do this.
>
> I think Andrea's original concept of the lock in the mmu_notifier_head
> structure was the best. I agree with him that it should be a spinlock
> instead of the rw_lock.
BTW, I don't see the scalability concern with huge number of tasks:
the lock is still in the mm, down_write(mm->mmap_sem); oneinstruction;
up_write(mm->mmap_sem) is always going to scale worse than
spin_lock(mm->somethingelse); oneinstruction;
spin_unlock(mm->somethinglese).
Furthermore if we go this route and we don't relay on implicit
serialization of all the mmu notifier users against exit_mmap
(i.e. the mmu notifier user must agree to stop calling
mmu_notifier_register on a mm after the last mmput) the autodisarming
feature will likely have to be removed or it can't possibly be safe to
run mmu_notifier_unregister while mmu_notifier_release runs. With the
auto-disarming feature, there is no way to safely know if
mmu_notifier_unregister has to be called or not. I'm ok with removing
the auto-disarming feature and to have as self-contained-as-possible
locking. Then mmu_notifier_release can just become the
invalidate_all_after and invalidate_all, invalidate_all_before.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2008-01-30 23:38 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-30 2:29 [patch 0/6] [RFC] MMU Notifiers V3 Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
2008-01-30 2:29 ` [patch 1/6] mmu_notifier: Core code Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
2008-01-30 15:37 ` Andrea Arcangeli
2008-01-30 15:37 ` Andrea Arcangeli
2008-01-30 15:37 ` Andrea Arcangeli
2008-01-30 15:53 ` Jack Steiner
2008-01-30 15:53 ` Jack Steiner
2008-01-30 15:53 ` Jack Steiner
2008-01-30 16:38 ` Andrea Arcangeli
2008-01-30 16:38 ` Andrea Arcangeli
2008-01-30 16:38 ` Andrea Arcangeli
2008-01-30 19:19 ` Christoph Lameter
2008-01-30 19:19 ` Christoph Lameter
2008-01-30 19:19 ` Christoph Lameter
2008-01-30 22:20 ` Robin Holt
2008-01-30 22:20 ` Robin Holt
2008-01-30 22:20 ` Robin Holt
2008-01-30 23:38 ` Andrea Arcangeli [this message]
2008-01-30 23:38 ` Andrea Arcangeli
2008-01-30 23:38 ` Andrea Arcangeli
2008-01-30 23:55 ` Christoph Lameter
2008-01-30 23:55 ` Christoph Lameter
2008-01-31 0:12 ` [kvm-devel] " Andrea Arcangeli
2008-01-31 0:12 ` Andrea Arcangeli
2008-01-31 0:12 ` Andrea Arcangeli
2008-01-31 1:27 ` [kvm-devel] " Christoph Lameter
2008-01-31 1:27 ` Christoph Lameter
2008-01-31 1:27 ` Christoph Lameter
2008-01-30 17:10 ` Peter Zijlstra
2008-01-30 17:10 ` Peter Zijlstra
2008-01-30 19:28 ` Christoph Lameter
2008-01-30 19:28 ` Christoph Lameter
2008-01-30 19:28 ` Christoph Lameter
2008-01-30 18:02 ` Robin Holt
2008-01-30 18:02 ` Robin Holt
2008-01-30 18:02 ` Robin Holt
2008-01-30 19:08 ` Christoph Lameter
2008-01-30 19:08 ` Christoph Lameter
2008-01-30 19:08 ` Christoph Lameter
2008-01-30 19:14 ` Christoph Lameter
2008-01-30 19:14 ` Christoph Lameter
2008-01-30 19:14 ` Christoph Lameter
2008-01-30 2:29 ` [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
2008-01-30 2:29 ` [patch 3/6] mmu_notifier: invalidate_page callbacks for subsystems with rmap Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
2008-01-30 18:03 ` Robin Holt
2008-01-30 18:03 ` Robin Holt
2008-01-30 18:03 ` Robin Holt
2008-01-30 2:29 ` [patch 4/6] MMU notifier: invalidate_page callbacks using Linux rmaps Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
2008-01-30 2:29 ` [patch 5/6] mmu_notifier: Callbacks for xip_filemap.c Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
2008-01-30 2:29 ` [patch 6/6] mmu_notifier: Add invalidate_all() Christoph Lameter
2008-01-30 2:29 ` Christoph Lameter
-- strict thread matches above, loose matches on Subject: below --
2008-02-15 6:48 [patch 0/6] MMU Notifiers V7 Christoph Lameter
2008-02-15 6:49 ` [patch 1/6] mmu_notifier: Core code Christoph Lameter
2008-02-15 6:49 ` Christoph Lameter
2008-02-16 3:37 ` Andrew Morton
2008-02-16 3:37 ` Andrew Morton
2008-02-16 8:45 ` Avi Kivity
2008-02-16 8:45 ` Avi Kivity
2008-02-16 8:45 ` Avi Kivity
2008-02-16 8:56 ` Andrew Morton
2008-02-16 8:56 ` Andrew Morton
2008-02-16 9:21 ` Avi Kivity
2008-02-16 9:21 ` Avi Kivity
2008-02-16 9:21 ` Avi Kivity
2008-02-16 10:41 ` Brice Goglin
2008-02-16 10:41 ` Brice Goglin
2008-02-16 10:58 ` Andrew Morton
2008-02-16 10:58 ` Andrew Morton
2008-02-16 19:31 ` Christoph Lameter
2008-02-16 19:31 ` Christoph Lameter
2008-02-16 19:21 ` Christoph Lameter
2008-02-16 19:21 ` Christoph Lameter
2008-02-17 3:01 ` Andrea Arcangeli
2008-02-17 3:01 ` Andrea Arcangeli
2008-02-17 12:24 ` Robin Holt
2008-02-17 12:24 ` Robin Holt
2008-02-17 12:24 ` Robin Holt
2008-02-17 5:04 ` Doug Maxey
2008-02-17 5:04 ` Doug Maxey
2008-02-17 5:04 ` Doug Maxey
2008-02-18 22:33 ` Roland Dreier
2008-02-18 22:33 ` Roland Dreier
2008-02-08 22:06 [patch 0/6] MMU Notifiers V6 Christoph Lameter
2008-02-08 22:06 ` [patch 1/6] mmu_notifier: Core code Christoph Lameter
2008-02-08 22:06 ` Christoph Lameter
2008-01-28 20:28 [patch 0/6] [RFC] MMU Notifiers V2 Christoph Lameter
2008-01-28 20:28 ` [patch 1/6] mmu_notifier: Core code Christoph Lameter
2008-01-28 20:28 ` Christoph Lameter
2008-01-28 22:06 ` Christoph Lameter
2008-01-28 22:06 ` Christoph Lameter
2008-01-28 22:06 ` Christoph Lameter
2008-01-29 0:05 ` Robin Holt
2008-01-29 0:05 ` Robin Holt
2008-01-29 0:05 ` Robin Holt
2008-01-29 1:19 ` Christoph Lameter
2008-01-29 1:19 ` Christoph Lameter
2008-01-29 1:19 ` Christoph Lameter
2008-01-29 13:59 ` Andrea Arcangeli
2008-01-29 13:59 ` Andrea Arcangeli
2008-01-29 13:59 ` Andrea Arcangeli
2008-01-29 14:34 ` Andrea Arcangeli
2008-01-29 14:34 ` Andrea Arcangeli
2008-01-29 14:34 ` Andrea Arcangeli
2008-01-29 19:49 ` Christoph Lameter
2008-01-29 19:49 ` Christoph Lameter
2008-01-29 19:49 ` Christoph Lameter
2008-01-29 20:41 ` Avi Kivity
2008-01-29 20:41 ` Avi Kivity
2008-01-29 20:41 ` Avi Kivity
2008-01-29 16:07 ` Robin Holt
2008-01-29 16:07 ` Robin Holt
2008-01-29 16:07 ` Robin Holt
2008-02-05 18:05 ` Andy Whitcroft
2008-02-05 18:05 ` Andy Whitcroft
2008-02-05 18:05 ` Andy Whitcroft
2008-02-05 18:17 ` Peter Zijlstra
2008-02-05 18:17 ` Peter Zijlstra
2008-02-05 18:19 ` Christoph Lameter
2008-02-05 18:19 ` Christoph Lameter
2008-02-05 18:19 ` Christoph Lameter
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=20080130233803.GB7185@v2.random \
--to=andrea@qumranet.com \
--cc=a.p.zijlstra@chello.nl \
--cc=avi@qumranet.com \
--cc=benh@kernel.crashing.org \
--cc=clameter@sgi.com \
--cc=daniel.blueman@quadrics.com \
--cc=holt@sgi.com \
--cc=hugh@veritas.com \
--cc=izike@qumranet.com \
--cc=kvm-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@suse.de \
--cc=steiner@sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.