All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@qumranet.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Hugh Dickins <hugh@veritas.com>, Robin Holt <holt@sgi.com>,
	Avi Kivity <avi@qumranet.com>, Izik Eidus <izike@qumranet.com>,
	kvm-devel@lists.sourceforge.net,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	general@lists.openfabrics.org,
	Steve Wise <swise@opengridcomputing.com>,
	Roland Dreier <rdreier@cisco.com>,
	Kanoj Sarcar <kanojsarcar@yahoo.com>,
	steiner@sgi.com, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, daniel.blueman@quadrics.com,
	Nick Piggin <npiggin@suse.de>
Subject: Re: [PATCH] mmu notifier #v11
Date: Sat, 5 Apr 2008 02:23:30 +0200	[thread overview]
Message-ID: <20080405002330.GF14784@duo.random> (raw)
In-Reply-To: <Pine.LNX.4.64.0804041504310.12396@schroedinger.engr.sgi.com>

On Fri, Apr 04, 2008 at 03:06:18PM -0700, Christoph Lameter wrote:
> Adds some comments. Still objectionable is the multiple ways of
> invalidating pages in #v11. Callout now has similar locking to emm.

range_begin exists because range_end is called after the page has
already been freed. invalidate_page is called _before_ the page is
freed but _after_ the pte has been zapped.

In short when working with single pages it's a waste to block the
secondary-mmu page fault, because it's zero cost to invalidate_page
before put_page. Not even GRU need to do that.

Instead for the multiple-pte-zapping we have to call range_end _after_
the page is already freed. This is so that there is a single range_end
call for an huge amount of address space. So we need a range_begin for
the subsystems not using page pinning for example. When working with
single pages (try_to_unmap_one, do_wp_page) invalidate_page avoids to
block the secondary mmu page fault, and it's in turn faster.

Besides avoiding need of serializing the secondary mmu page fault,
invalidate_page also reduces the overhead when the mmu notifiers are
disarmed (i.e. kvm not running).

WARNING: multiple messages have this Message-ID (diff)
From: Andrea Arcangeli <andrea@qumranet.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: Nick Piggin <npiggin@suse.de>,
	steiner@sgi.com, Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-mm@kvack.org, Izik Eidus <izike@qumranet.com>,
	Kanoj Sarcar <kanojsarcar@yahoo.com>,
	Roland Dreier <rdreier@cisco.com>,
	linux-kernel@vger.kernel.org, Avi Kivity <avi@qumranet.com>,
	kvm-devel@lists.sourceforge.net, daniel.blueman@quadrics.com,
	Robin Holt <holt@sgi.com>,
	general@lists.openfabrics.org, Hugh Dickins <hugh@veritas.com>
Subject: [ofa-general] Re: [PATCH] mmu notifier #v11
Date: Sat, 5 Apr 2008 02:23:30 +0200	[thread overview]
Message-ID: <20080405002330.GF14784@duo.random> (raw)
In-Reply-To: <Pine.LNX.4.64.0804041504310.12396@schroedinger.engr.sgi.com>

On Fri, Apr 04, 2008 at 03:06:18PM -0700, Christoph Lameter wrote:
> Adds some comments. Still objectionable is the multiple ways of
> invalidating pages in #v11. Callout now has similar locking to emm.

range_begin exists because range_end is called after the page has
already been freed. invalidate_page is called _before_ the page is
freed but _after_ the pte has been zapped.

In short when working with single pages it's a waste to block the
secondary-mmu page fault, because it's zero cost to invalidate_page
before put_page. Not even GRU need to do that.

Instead for the multiple-pte-zapping we have to call range_end _after_
the page is already freed. This is so that there is a single range_end
call for an huge amount of address space. So we need a range_begin for
the subsystems not using page pinning for example. When working with
single pages (try_to_unmap_one, do_wp_page) invalidate_page avoids to
block the secondary mmu page fault, and it's in turn faster.

Besides avoiding need of serializing the secondary mmu page fault,
invalidate_page also reduces the overhead when the mmu notifiers are
disarmed (i.e. kvm not running).

  reply	other threads:[~2008-04-05  0:23 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-01 20:55 [patch 0/9] [RFC] EMM Notifier V2 Christoph Lameter
2008-04-01 20:55 ` [ofa-general] " Christoph Lameter
2008-04-01 20:55 ` [patch 1/9] EMM Notifier: The notifier calls Christoph Lameter
2008-04-01 20:55   ` Christoph Lameter
2008-04-01 21:14   ` Peter Zijlstra
2008-04-01 21:38     ` Paul E. McKenney
2008-04-02 17:44       ` Christoph Lameter
2008-04-02 18:43       ` EMM: Fix rcu handling and spelling Christoph Lameter
2008-04-02 19:02         ` Paul E. McKenney
2008-04-02  6:49   ` [patch 1/9] EMM Notifier: The notifier calls Andrea Arcangeli
2008-04-02  6:49     ` [ofa-general] " Andrea Arcangeli
2008-04-02 10:59     ` Robin Holt
2008-04-02 10:59       ` [ofa-general] " Robin Holt
2008-04-02 11:16       ` Andrea Arcangeli
2008-04-02 11:16         ` Andrea Arcangeli
2008-04-02 14:26         ` Robin Holt
2008-04-02 17:59     ` Christoph Lameter
2008-04-02 17:59       ` [ofa-general] " Christoph Lameter
2008-04-02 19:03       ` EMM: Fixup return value handling of emm_notify() Christoph Lameter
2008-04-02 19:03         ` [ofa-general] " Christoph Lameter
2008-04-02 21:25         ` Andrea Arcangeli
2008-04-02 21:25           ` [ofa-general] " Andrea Arcangeli
2008-04-02 21:33           ` Christoph Lameter
2008-04-02 21:33             ` [ofa-general] " Christoph Lameter
2008-04-03 10:40             ` Peter Zijlstra
2008-04-03 10:40               ` [ofa-general] " Peter Zijlstra
2008-04-03 15:00               ` Andrea Arcangeli
2008-04-03 15:00                 ` [ofa-general] " Andrea Arcangeli
2008-04-03 19:14               ` Christoph Lameter
2008-04-03 19:14                 ` [ofa-general] " Christoph Lameter
2008-04-02 21:05       ` EMM: Require single threadedness for registration Christoph Lameter
2008-04-02 21:05         ` [ofa-general] " Christoph Lameter
2008-04-02 22:01         ` Andrea Arcangeli
2008-04-02 22:01           ` [ofa-general] " Andrea Arcangeli
2008-04-02 22:06           ` Christoph Lameter
2008-04-02 22:06             ` [ofa-general] " Christoph Lameter
2008-04-02 22:17             ` Andrea Arcangeli
2008-04-02 22:17               ` [ofa-general] " Andrea Arcangeli
2008-04-02 22:41               ` Christoph Lameter
2008-04-02 22:41                 ` [ofa-general] " Christoph Lameter
2008-04-03  1:24               ` EMM: disable other notifiers before register and unregister Christoph Lameter
2008-04-03  1:24                 ` Christoph Lameter
2008-04-03 10:40                 ` Peter Zijlstra
2008-04-03 10:40                   ` [ofa-general] " Peter Zijlstra
2008-04-03 15:29                 ` Andrea Arcangeli
2008-04-03 19:20                   ` Christoph Lameter
2008-04-03 19:20                     ` [ofa-general] " Christoph Lameter
2008-04-03 20:23                     ` Christoph Lameter
2008-04-04 12:30                     ` Andrea Arcangeli
2008-04-04 12:30                       ` Andrea Arcangeli
2008-04-04 20:20                     ` [PATCH] mmu notifier #v11 Andrea Arcangeli
2008-04-04 20:20                       ` [ofa-general] " Andrea Arcangeli
2008-04-04 22:06                       ` Christoph Lameter
2008-04-05  0:23                         ` Andrea Arcangeli [this message]
2008-04-05  0:23                           ` [ofa-general] " Andrea Arcangeli
2008-04-07  5:45                           ` Christoph Lameter
2008-04-07  5:45                             ` Christoph Lameter
2008-04-07  6:02                             ` Andrea Arcangeli
2008-04-07  6:02                               ` [ofa-general] " Andrea Arcangeli
2008-04-02 21:53       ` [patch 1/9] EMM Notifier: The notifier calls Andrea Arcangeli
2008-04-02 21:53         ` [ofa-general] " Andrea Arcangeli
2008-04-02 21:54         ` Christoph Lameter
2008-04-02 21:54           ` [ofa-general] " Christoph Lameter
2008-04-02 22:09           ` Andrea Arcangeli
2008-04-02 22:09             ` [ofa-general] " Andrea Arcangeli
2008-04-02 23:04             ` Christoph Lameter
2008-04-02 23:04               ` [ofa-general] " Christoph Lameter
2008-04-01 20:55 ` [patch 2/9] Move tlb flushing into free_pgtables Christoph Lameter
2008-04-01 20:55   ` [ofa-general] " Christoph Lameter
2008-04-01 20:55 ` [patch 3/9] Convert i_mmap_lock to i_mmap_sem Christoph Lameter
2008-04-01 20:55   ` [ofa-general] " Christoph Lameter
2008-04-01 20:55 ` [patch 4/9] Remove tlb pointer from the parameters of unmap vmas Christoph Lameter
2008-04-01 20:55   ` Christoph Lameter
2008-04-01 20:55 ` [patch 5/9] Convert anon_vma lock to rw_sem and refcount Christoph Lameter
2008-04-01 20:55   ` Christoph Lameter
2008-04-02 17:50   ` Andrea Arcangeli
2008-04-02 17:50     ` Andrea Arcangeli
2008-04-02 18:15     ` Christoph Lameter
2008-04-02 18:15       ` Christoph Lameter
2008-04-02 21:56       ` Andrea Arcangeli
2008-04-02 21:56         ` [ofa-general] " Andrea Arcangeli
2008-04-02 21:56         ` Christoph Lameter
2008-04-02 21:56           ` [ofa-general] " Christoph Lameter
2008-04-02 22:12           ` Andrea Arcangeli
2008-04-02 22:12             ` [ofa-general] " Andrea Arcangeli
2008-04-01 20:55 ` [patch 6/9] This patch exports zap_page_range as it is needed by XPMEM Christoph Lameter
2008-04-01 20:55   ` Christoph Lameter
2008-04-01 20:55 ` [patch 7/9] Locking rules for taking multiple mmap_sem locks Christoph Lameter
2008-04-01 20:55   ` Christoph Lameter
2008-04-01 20:55 ` [patch 8/9] XPMEM: The device driver Christoph Lameter
2008-04-01 20:55   ` Christoph Lameter
2008-04-01 20:55 ` [patch 9/9] XPMEM: Simple example Christoph Lameter
2008-04-01 20:55   ` 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=20080405002330.GF14784@duo.random \
    --to=andrea@qumranet.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=avi@qumranet.com \
    --cc=clameter@sgi.com \
    --cc=daniel.blueman@quadrics.com \
    --cc=general@lists.openfabrics.org \
    --cc=holt@sgi.com \
    --cc=hugh@veritas.com \
    --cc=izike@qumranet.com \
    --cc=kanojsarcar@yahoo.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@suse.de \
    --cc=rdreier@cisco.com \
    --cc=steiner@sgi.com \
    --cc=swise@opengridcomputing.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.