All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Chris Snook <csnook@redhat.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	Hugh Dickens <hugh@veritas.com>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Avi Kivity <avi@qumranet.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Rik van Riel <riel@redhat.com>
Subject: Re: Populating multiple ptes at fault time
Date: Wed, 17 Sep 2008 14:45:55 -0700	[thread overview]
Message-ID: <48D17A93.4000803@goop.org> (raw)
In-Reply-To: <48D1625C.7000309@redhat.com>

Chris Snook wrote:
> Is it still expensive when you're using nested page tables?

No, nested pagetables are the same as native to update, so the main
benefit in that case is the reduction of faults.

> We already have rather well-tested code in the VM to detect fault
> patterns, complete with userspace hints to set readahead policy.  It
> seems to me that if we're going to read nearby pages into pagecache,
> we might as well actually map them at the same time.  Duplicating the
> readahead code is probably a bad idea.

Right, that was my point.  I'm assuming that that machinery already
exists and would be available for use in this case.

>> Minor faults are easier; if the page already exists in memory, we should
>> just create mappings to it.  If neighbouring pages are also already
>> present, then we can can cheaply create mappings for them too.
>
> If we're mapping pagecache, then sure, this is really cheap, but
> speculatively allocating anonymous pages will hurt, badly, on many
> workloads.

OK, makes sense.  Does the access pattern detecting code measure access
patterns to anonymous mappings?

>> This seems like an obvious idea, so I'm wondering if someone has
>> prototyped it already to see what effects there are.  In the native
>> case, pte updates are much cheaper, so perhaps it doesn't help much
>> there, though it would potentially reduce the number of faults
>> needed. But I think there's scope for measurable benefits in the
>> virtual case.
>
> Sounds like something we might want to enable conditionally on the use
> of pv_ops features.

Perhaps, but I'd rather avoid it.  I'm hoping this is something we could
do that has - at worst - no effect on the native case, while improving
the virtual case.  The test matrix is already large enough without
adding another stateful switch.  After all, any side effect which makes
it a bad idea for the native case will probably be bad enough to
overwhelm any benefit in the virtual case.

    J

WARNING: multiple messages have this Message-ID (diff)
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Chris Snook <csnook@redhat.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	Hugh Dickens <hugh@veritas.com>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Avi Kivity <avi@qumranet.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Rik van Riel <riel@redhat.com>
Subject: Re: Populating multiple ptes at fault time
Date: Wed, 17 Sep 2008 14:45:55 -0700	[thread overview]
Message-ID: <48D17A93.4000803@goop.org> (raw)
In-Reply-To: <48D1625C.7000309@redhat.com>

Chris Snook wrote:
> Is it still expensive when you're using nested page tables?

No, nested pagetables are the same as native to update, so the main
benefit in that case is the reduction of faults.

> We already have rather well-tested code in the VM to detect fault
> patterns, complete with userspace hints to set readahead policy.  It
> seems to me that if we're going to read nearby pages into pagecache,
> we might as well actually map them at the same time.  Duplicating the
> readahead code is probably a bad idea.

Right, that was my point.  I'm assuming that that machinery already
exists and would be available for use in this case.

>> Minor faults are easier; if the page already exists in memory, we should
>> just create mappings to it.  If neighbouring pages are also already
>> present, then we can can cheaply create mappings for them too.
>
> If we're mapping pagecache, then sure, this is really cheap, but
> speculatively allocating anonymous pages will hurt, badly, on many
> workloads.

OK, makes sense.  Does the access pattern detecting code measure access
patterns to anonymous mappings?

>> This seems like an obvious idea, so I'm wondering if someone has
>> prototyped it already to see what effects there are.  In the native
>> case, pte updates are much cheaper, so perhaps it doesn't help much
>> there, though it would potentially reduce the number of faults
>> needed. But I think there's scope for measurable benefits in the
>> virtual case.
>
> Sounds like something we might want to enable conditionally on the use
> of pv_ops features.

Perhaps, but I'd rather avoid it.  I'm hoping this is something we could
do that has - at worst - no effect on the native case, while improving
the virtual case.  The test matrix is already large enough without
adding another stateful switch.  After all, any side effect which makes
it a bad idea for the native case will probably be bad enough to
overwhelm any benefit in the virtual case.

    J

--
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>

  reply	other threads:[~2008-09-17 21:46 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-17 17:47 Populating multiple ptes at fault time Jeremy Fitzhardinge
2008-09-17 17:47 ` Jeremy Fitzhardinge
2008-09-17 18:28 ` Rik van Riel
2008-09-17 18:28   ` Rik van Riel
2008-09-17 21:47   ` Jeremy Fitzhardinge
2008-09-17 21:47     ` Jeremy Fitzhardinge
2008-09-17 20:02 ` Chris Snook
2008-09-17 20:02   ` Chris Snook
2008-09-17 21:45   ` Jeremy Fitzhardinge [this message]
2008-09-17 21:45     ` Jeremy Fitzhardinge
2008-09-18 18:16     ` Christoph Lameter
2008-09-18 18:16       ` Christoph Lameter
2008-09-18 18:53       ` Jeremy Fitzhardinge
2008-09-18 18:53         ` Jeremy Fitzhardinge
2008-09-18 19:39         ` Christoph Lameter
2008-09-18 19:39           ` Christoph Lameter
2008-09-18 22:21           ` KOSAKI Motohiro
2008-09-18 22:21             ` KOSAKI Motohiro
2008-09-18 20:52         ` Martin Bligh
2008-09-18 20:52           ` Martin Bligh
2008-09-18 20:53           ` Chris Snook
2008-09-18 20:53             ` Chris Snook
2008-09-18 21:11             ` Martin Bligh
2008-09-18 21:11               ` Martin Bligh
2008-09-18 21:13               ` Christoph Lameter
2008-09-18 21:13                 ` Christoph Lameter
2008-09-18 21:21                 ` Martin Bligh
2008-09-18 21:21                   ` Martin Bligh
2008-09-18 21:32                   ` Christoph Lameter
2008-09-18 21:32                     ` Christoph Lameter
2008-09-18 21:49                     ` MinChan Kim
2008-09-18 21:49                       ` MinChan Kim
2008-09-18 21:58                       ` Christoph Lameter
2008-09-18 21:58                         ` Christoph Lameter
2008-09-18 22:08                         ` Martin Bligh
2008-09-18 22:08                           ` Martin Bligh
2008-09-18 22:11                           ` Christoph Lameter
2008-09-18 22:11                             ` Christoph Lameter
2008-09-18 22:18                             ` Martin Bligh
2008-09-18 22:18                               ` Martin Bligh
2008-09-18 22:22                               ` Jeremy Fitzhardinge
2008-09-18 22:22                                 ` Jeremy Fitzhardinge
2008-09-18 22:23                             ` Chris Snook
2008-09-18 22:23                               ` Chris Snook
2008-09-18 23:16                               ` MinChan Kim
2008-09-18 23:16                                 ` MinChan Kim
2008-09-17 22:02 ` Avi Kivity
2008-09-17 22:02   ` Avi Kivity
2008-09-17 22:30   ` Jeremy Fitzhardinge
2008-09-17 22:30     ` Jeremy Fitzhardinge
2008-09-17 22:47     ` Avi Kivity
2008-09-17 22:47       ` Avi Kivity
2008-09-17 23:02       ` Jeremy Fitzhardinge
2008-09-17 23:02         ` Jeremy Fitzhardinge
2008-09-18 20:26         ` Avi Kivity
2008-09-18 20:26           ` Avi Kivity
2008-09-18 22:18           ` Jeremy Fitzhardinge
2008-09-18 22:18             ` Jeremy Fitzhardinge
2008-09-18 23:38             ` Avi Kivity
2008-09-18 23:38               ` Avi Kivity
2008-09-19  0:00               ` Jeremy Fitzhardinge
2008-09-19  0:00                 ` Jeremy Fitzhardinge
2008-09-19  0:20                 ` Avi Kivity
2008-09-19  0:20                   ` Avi Kivity
2008-09-19  0:42                   ` Jeremy Fitzhardinge
2008-09-19  0:42                     ` Jeremy Fitzhardinge
2008-09-24 12:31                     ` Avi Kivity
2008-09-24 12:31                       ` Avi Kivity
2008-09-25 18:32                       ` Jeremy Fitzhardinge
2008-09-25 18:32                         ` Jeremy Fitzhardinge
2008-09-26 10:26                         ` Martin Schwidefsky
2008-09-26 10:26                           ` Martin Schwidefsky
2008-09-19 17:45   ` Benjamin Herrenschmidt
2008-09-19 17:45     ` Benjamin Herrenschmidt
2008-09-17 23:50 ` MinChan Kim
2008-09-17 23:50   ` MinChan Kim
2008-09-18  6:58   ` KOSAKI Motohiro
2008-09-18  6:58     ` KOSAKI Motohiro
2008-09-18  7:26   ` KAMEZAWA Hiroyuki
2008-09-18  7:26     ` KAMEZAWA Hiroyuki

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=48D17A93.4000803@goop.org \
    --to=jeremy@goop.org \
    --cc=akpm@linux-foundation.org \
    --cc=avi@qumranet.com \
    --cc=csnook@redhat.com \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=riel@redhat.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.