mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Daniel Phillips <phillips@bonn-fries.net>
To: Oliver Xymoron <oxymoron@waste.org>
Cc: Rik van Riel <riel@conectiva.com.br>,
	Linus Torvalds <torvalds@transmeta.com>,
	Josh MacDonald <jmacd@CS.Berkeley.EDU>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	<reiserfs-list@namesys.com>, <reiserfs-dev@namesys.com>
Subject: Re: Note describing poor dcache utilization under high memory pressure
Date: Tue, 29 Jan 2002 23:53:21 +0100	[thread overview]
Message-ID: <E16Vh7y-0000Ac-00@starship.berlin> (raw)
In-Reply-To: <Pine.LNX.4.44.0201291446460.25443-100000@waste.org>
In-Reply-To: <Pine.LNX.4.44.0201291446460.25443-100000@waste.org>

On January 29, 2002 10:00 pm, Oliver Xymoron wrote:
> On Tue, 29 Jan 2002, Daniel Phillips wrote:
> 
> > On January 29, 2002 06:25 pm, Rik van Riel wrote:
> > > On Tue, 29 Jan 2002, Oliver Xymoron wrote:
> > >
> > > > Daniel's approach seems to be workable (once he's spelled out all the
> > > > details) but it misses the big performance win for fork/exec, which is
> > > > surely the common case. Given that exec will be throwing away all these
> > > > mappings, we can safely assume that we will not be inheriting many shared
> > > > mappings from parents of parents so Daniel's approach also still ends up
> > > > marking most of the pages RO still.
> > >
> > > It gets worse.  His approach also needs to adjust the reference
> > > counts on all pages (and swap pages).
> >
> > Well, Rik, time to present your algorithm.  I assume it won't reference
> > counts on pages, and will do some kind of traversal of the mm tree.  Note
> > however, that I did investigate the class of algorithm you are interested in,
> > and found only nasty, complex solutions there, with challenging locking
> > problems.  (I also looked at a number of possible improvements to virtual
> > scanning, as you know, and likewise only found ugly or inadequate solutions.)
> 
> I think it goes something like this:
> 
> fork:
>   detach page tables from parent
>   retain pointer to "backing page tables" in parent and child
>   update use count in page tables
>   "prefault" tables for current stack and instruction pages in both parent
>     and child
> 
> page fault:
>   if faulted on page table:
>     look up backing page tables
>     if use count > 1: copy, dec use count
>     else: take ownership
> 
> > Before you sink a lot of time into it though, you might add up the actual
> > overhead you're worried about above, and see if it moves the needle in a real
> > system.
> 
> I'm pretty sure something like the above does signficantly less work in
> the fork/exec case, which is the important one.

With fork/exec, for each page table there are two cases:

  - The parent instantiated the page table.  In this case the extra work to
    set the ptes RO (only for CoW pages) is insignificant.

  - The parent is still sharing the page table with its parent and so the
    ptes are still set RO.

I don't see how there is a whole lot of fat to cut here. 

-- 
Daniel

  parent reply	other threads:[~2002-01-29 22:50 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-28 17:13 Josh MacDonald
2002-01-28 17:39 ` Linus Torvalds
2002-01-28 18:01   ` Rik van Riel
2002-01-28 18:21     ` Linus Torvalds
2002-01-28 18:37       ` Rik van Riel
2002-01-28 19:28         ` William Lee Irwin III
2002-01-28 20:01       ` Daniel Phillips
2002-01-28 21:33         ` Rick Stevens
2002-01-28 21:43           ` Rik van Riel
2002-01-28 22:00             ` Rick Stevens
2002-01-28 22:43               ` Daniel Phillips
2002-01-28 23:06                 ` Rick Stevens
2002-01-28 23:51                   ` [OT] " jepler
2002-01-29  2:30                     ` IPmonger
2002-01-29 12:02                     ` Karl & Betty Schendel
2002-01-28 22:26             ` Daniel Phillips
2002-01-28 22:34           ` Brian Gerst
2002-01-28 23:08             ` Daniel Phillips
2002-01-28 22:39           ` Daniel Phillips
2002-01-28 23:12             ` Rick Stevens
2002-01-28 23:27               ` Daniel Phillips
2002-01-28 22:01         ` Momchil Velikov
2002-01-28 22:19           ` Daniel Phillips
2002-01-29  1:29         ` Oliver Xymoron
2002-01-29  1:37           ` [reiserfs-list] " Valdis.Kletnieks
2002-01-29  1:45           ` Daniel Phillips
2002-01-29  8:39           ` Momchil Velikov
2002-01-29  8:55             ` Daniel Phillips
2002-01-29  9:20               ` William Lee Irwin III
2002-01-29  9:55                 ` Daniel Phillips
2002-01-29 10:18                 ` Momchil Velikov
2002-01-29 19:55                   ` William Lee Irwin III
2002-01-29 20:08                     ` Linus Torvalds
2002-01-29 20:39                       ` William Lee Irwin III
2002-01-29 20:49                         ` Linus Torvalds
2002-01-29 21:01                           ` William Lee Irwin III
2002-01-29  9:20               ` Momchil Velikov
2002-01-29 10:27                 ` Daniel Phillips
2002-01-29 11:54                 ` Helge Hafting
2002-01-29 12:33                   ` Daniel Phillips
2002-01-30  9:07                     ` Horst von Brand
2002-01-30 10:55                       ` Daniel Phillips
2002-01-30 14:46                         ` Rik van Riel
2002-01-30 14:59                           ` Daniel Phillips
2002-01-30 15:54                             ` Rik van Riel
2002-01-30 16:34                               ` Daniel Phillips
2002-01-29 10:59           ` Rik van Riel
2002-01-29 11:28             ` Daniel Phillips
2002-01-29 11:38               ` Rik van Riel
2002-01-29 12:01                 ` Daniel Phillips
2002-01-29 16:57             ` Oliver Xymoron
2002-01-29 17:25               ` Rik van Riel
2002-01-29 20:48                 ` Daniel Phillips
2002-01-29 21:00                   ` Oliver Xymoron
2002-01-29 21:08                     ` Linus Torvalds
2002-01-29 21:13                       ` Oliver Xymoron
2002-01-29 21:50                         ` Linus Torvalds
2002-01-29 22:02                           ` Oliver Xymoron
2002-01-29 22:10                             ` Linus Torvalds
2002-01-29 22:53                           ` Daniel Phillips
2002-01-29 22:53                     ` Daniel Phillips [this message]
2002-01-29 23:02                       ` Oliver Xymoron
2002-01-29 23:21                         ` Daniel Phillips
2002-01-28 19:25   ` [reiserfs-dev] " Hans Reiser
2002-01-28 23:52     ` Daniel Phillips
2002-01-29  0:16       ` Hans Reiser
2002-01-29  0:30         ` Alexander Viro
2002-01-29 10:46           ` Hans Reiser
2002-01-29 14:50           ` Chris Mason
2002-01-29 21:10             ` Hans Reiser
2002-01-30  7:11               ` Oliver Xymoron
2002-01-30  9:57                 ` Hans Reiser
2002-01-29 17:28           ` Josh MacDonald
2002-01-29 18:44             ` [reiserfs-list] " Andreas Dilger
2002-01-29 19:55               ` Andrew Morton
2002-01-30  7:17                 ` Oliver Xymoron
2002-01-30  7:32                   ` [reiserfs-list] Re: [reiserfs-dev] Re: Note describing poordcache " Andrew Morton
2002-01-30  7:52                     ` Oliver Xymoron
2002-01-30 10:03                     ` Hans Reiser
2002-01-30 10:07             ` [reiserfs-dev] Re: Note describing poor dcache " Horst von Brand
2002-01-29 18:29           ` Horst von Brand
2002-01-29  0:51         ` Daniel Phillips
2002-01-29  1:32           ` Daniel Phillips
2002-01-28 22:46   ` Alex Bligh - linux-kernel
2002-01-29 17:27   ` Josh MacDonald

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=E16Vh7y-0000Ac-00@starship.berlin \
    --to=phillips@bonn-fries.net \
    --cc=jmacd@CS.Berkeley.EDU \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oxymoron@waste.org \
    --cc=reiserfs-dev@namesys.com \
    --cc=reiserfs-list@namesys.com \
    --cc=riel@conectiva.com.br \
    --cc=torvalds@transmeta.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

all inboxes | Powered by JetHome®