All of lore.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Daniel Phillips <phillips@bonn-fries.net>
Cc: Hugh Dickins <hugh@veritas.com>,
	Linus Torvalds <torvalds@transmeta.com>,
	dmccr@us.ibm.com,
	Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org, Robert Love <rml@tech9.net>,
	Rik van Riel <riel@conectiva.com.br>,
	mingo@redhat.com, Andrew Morton <akpm@zip.com.au>,
	manfred@colorfullife.com, wli@holomorphy.com
Subject: Re: [RFC] Page table sharing
Date: 18 Feb 2002 21:27:11 -0700	[thread overview]
Message-ID: <m1heoe3xls.fsf@frodo.biederman.org> (raw)
In-Reply-To: <Pine.LNX.4.21.0202182358190.1021-100000@localhost.localdomain> <E16cy8E-0000xp-00@starship.berlin>
In-Reply-To: <E16cy8E-0000xp-00@starship.berlin>

Daniel Phillips <phillips@bonn-fries.net> writes:

> On February 19, 2002 01:03 am, Hugh Dickins wrote:
> > On Tue, 19 Feb 2002, Daniel Phillips wrote:
> > > On February 18, 2002 08:04 pm, Hugh Dickins wrote:
> > > > On Mon, 18 Feb 2002, Daniel Phillips wrote:
> > > > > On February 18, 2002 09:09 am, Hugh Dickins wrote:
> > > > > > Since copy_page_range would not copy shared page tables, I'm wrong to
> > > > > > point there.  But __pte_alloc does copy shared page tables (to unshare
> 
> > > > > > them), and needs them to be stable while it does so: so locking
> against
> 
> > > > > > swap_out really is required.  It also needs locking against read
> faults,
> 
> > > > > > and they against each other: but there I imagine it's just a matter of
> 
> > > > > > dropping the write arg to __pte_alloc, going back to pte_alloc again.
> > > 
> > > I'm not sure what you mean here, you're not suggesting we should unshare the
> 
> > > page table on read fault are you?
> > 
> > I am.  But I can understand that you'd prefer not to do it that way.
> > Hugh
> 
> No, that's not nearly studly enough ;-)
> 
> Since we have gone to all the trouble of sharing the page table, we should
> swap in/out for all sharers at the same time.  That is, keep it shared, saving
> memory and cpu.
> 
> Now I finally see what you were driving at: before, we could count on the
> mm->page_table_lock for exclusion on read fault, now we can't, at least not
> when ptb->count is great than one[1].  So let's come up with something nice as
> a substitute, any suggestions?
> 
> [1] I think that's a big, broad hint.

Something like:
struct mm_share {
        spinlock_t page_table_lock;
        struct list_head mm_list;
};

struct mm {
	struct list_head mm_list;
        struct mm_share *mm_share;
        .....
};

So we have an overarching structure for all of the shared mm's.  

Eric

WARNING: multiple messages have this Message-ID (diff)
From: ebiederm@xmission.com (Eric W. Biederman)
To: Daniel Phillips <phillips@bonn-fries.net>
Cc: Hugh Dickins <hugh@veritas.com>,
	Linus Torvalds <torvalds@transmeta.com>,
	dmccr@us.ibm.com,
	Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org, Robert Love <rml@tech9.net>,
	Rik van Riel <riel@conectiva.com.br>,
	mingo@redhat.com, Andrew Morton <akpm@zip.com.au>,
	manfred@colorfullife.com, wli@holomorphy.com
Subject: Re: [RFC] Page table sharing
Date: 18 Feb 2002 21:27:11 -0700	[thread overview]
Message-ID: <m1heoe3xls.fsf@frodo.biederman.org> (raw)
In-Reply-To: <E16cy8E-0000xp-00@starship.berlin>

Daniel Phillips <phillips@bonn-fries.net> writes:

> On February 19, 2002 01:03 am, Hugh Dickins wrote:
> > On Tue, 19 Feb 2002, Daniel Phillips wrote:
> > > On February 18, 2002 08:04 pm, Hugh Dickins wrote:
> > > > On Mon, 18 Feb 2002, Daniel Phillips wrote:
> > > > > On February 18, 2002 09:09 am, Hugh Dickins wrote:
> > > > > > Since copy_page_range would not copy shared page tables, I'm wrong to
> > > > > > point there.  But __pte_alloc does copy shared page tables (to unshare
> 
> > > > > > them), and needs them to be stable while it does so: so locking
> against
> 
> > > > > > swap_out really is required.  It also needs locking against read
> faults,
> 
> > > > > > and they against each other: but there I imagine it's just a matter of
> 
> > > > > > dropping the write arg to __pte_alloc, going back to pte_alloc again.
> > > 
> > > I'm not sure what you mean here, you're not suggesting we should unshare the
> 
> > > page table on read fault are you?
> > 
> > I am.  But I can understand that you'd prefer not to do it that way.
> > Hugh
> 
> No, that's not nearly studly enough ;-)
> 
> Since we have gone to all the trouble of sharing the page table, we should
> swap in/out for all sharers at the same time.  That is, keep it shared, saving
> memory and cpu.
> 
> Now I finally see what you were driving at: before, we could count on the
> mm->page_table_lock for exclusion on read fault, now we can't, at least not
> when ptb->count is great than one[1].  So let's come up with something nice as
> a substitute, any suggestions?
> 
> [1] I think that's a big, broad hint.

Something like:
struct mm_share {
        spinlock_t page_table_lock;
        struct list_head mm_list;
};

struct mm {
	struct list_head mm_list;
        struct mm_share *mm_share;
        .....
};

So we have an overarching structure for all of the shared mm's.  

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

  reply	other threads:[~2002-02-19  4:32 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-16 18:07 [RFC] Page table sharing Daniel Phillips
2002-02-16 20:21 ` Linus Torvalds
2002-02-16 21:08   ` Daniel Phillips
2002-02-17  6:23     ` Linus Torvalds
2002-02-17 19:39       ` Daniel Phillips
2002-02-17 19:39         ` Daniel Phillips
2002-02-17 20:16         ` Daniel Phillips
2002-02-17 20:16           ` Daniel Phillips
2002-02-17 22:16         ` Hugh Dickins
2002-02-17 22:16           ` Hugh Dickins
2002-02-18  1:35           ` Daniel Phillips
2002-02-18  1:35             ` Daniel Phillips
2002-02-18  8:09             ` Hugh Dickins
2002-02-18  8:09               ` Hugh Dickins
2002-02-18  9:41               ` Daniel Phillips
2002-02-18  9:41                 ` Daniel Phillips
2002-02-18 11:32                 ` Daniel Phillips
2002-02-18 11:32                   ` Daniel Phillips
2002-02-19  0:01                   ` Daniel Phillips
2002-02-18 19:04                 ` Hugh Dickins
2002-02-18 19:04                   ` Hugh Dickins
2002-02-18 23:37                   ` Daniel Phillips
2002-02-18 23:37                     ` Daniel Phillips
2002-02-19  0:56                     ` Linus Torvalds
2002-02-19  0:56                       ` Linus Torvalds
2002-02-19  1:22                       ` Rik van Riel
2002-02-19  1:22                         ` Rik van Riel
2002-02-19  1:29                         ` Daniel Phillips
2002-02-19  1:29                           ` Daniel Phillips
2002-02-19  1:48                         ` Linus Torvalds
2002-02-19  1:48                           ` Linus Torvalds
2002-02-19  1:53                           ` Rik van Riel
2002-02-19  1:53                             ` Rik van Riel
2002-02-19  2:05                             ` Linus Torvalds
2002-02-19  2:05                               ` Linus Torvalds
2002-02-19  2:22                               ` Daniel Phillips
2002-02-19  2:22                                 ` Daniel Phillips
2002-02-19  2:35                                 ` Linus Torvalds
2002-02-19  2:35                                   ` Linus Torvalds
2002-02-19  2:55                                   ` Daniel Phillips
2002-02-19  2:55                                     ` Daniel Phillips
2002-02-19  3:11                                   ` Daniel Phillips
2002-02-19  3:11                                     ` Daniel Phillips
2002-02-19  3:22                                   ` Linus Torvalds
2002-02-19  3:22                                     ` Linus Torvalds
2002-02-19  3:45                                     ` Daniel Phillips
2002-02-19  3:45                                       ` Daniel Phillips
2002-02-19 17:29                                       ` Linus Torvalds
2002-02-19 17:29                                         ` Linus Torvalds
2002-02-19 18:11                                         ` Hugh Dickins
2002-02-19 18:11                                           ` Hugh Dickins
2002-02-20 14:18                                           ` Daniel Phillips
2002-02-20 14:18                                             ` Daniel Phillips
2002-02-20 15:30                                             ` Hugh Dickins
2002-02-20 15:30                                               ` Hugh Dickins
2002-02-20 14:10                                         ` Daniel Phillips
2002-02-20 14:10                                           ` Daniel Phillips
2002-02-20 14:38                                           ` Hugh Dickins
2002-02-20 14:38                                             ` Hugh Dickins
2002-02-20 14:57                                             ` Daniel Phillips
2002-02-20 14:57                                               ` Daniel Phillips
2002-02-19 11:39                                     ` Daniel Phillips
2002-02-19 11:39                                       ` Daniel Phillips
2002-02-19 12:22                                       ` Hugh Dickins
2002-02-19 12:22                                         ` Hugh Dickins
2002-02-19 12:43                                         ` Daniel Phillips
2002-02-19 12:43                                           ` Daniel Phillips
2002-02-19 10:02                                   ` Roman Zippel
2002-02-19 10:02                                     ` Roman Zippel
2002-02-22  5:29                               ` Daniel Phillips
2002-02-22  5:29                                 ` Daniel Phillips
2002-02-22  6:32                                 ` Daniel Phillips
2002-02-22  6:32                                   ` Daniel Phillips
2002-02-22  9:21                                   ` [RFC] Page table sharing, leak gone Daniel Phillips
2002-02-22  9:21                                     ` Daniel Phillips
2002-02-19  1:57                           ` [RFC] Page table sharing Daniel Phillips
2002-02-19  1:57                             ` Daniel Phillips
2002-02-19  1:23                       ` Daniel Phillips
2002-02-19  1:23                         ` Daniel Phillips
2002-02-19  1:50                       ` Daniel Phillips
2002-02-19  1:50                         ` Daniel Phillips
2002-02-19  1:53                         ` Linus Torvalds
2002-02-19  1:53                           ` Linus Torvalds
2002-02-19  2:12                           ` Daniel Phillips
2002-02-19  2:12                             ` Daniel Phillips
2002-02-18 23:48                   ` Daniel Phillips
2002-02-18 23:48                     ` Daniel Phillips
2002-02-18 23:59                   ` Daniel Phillips
2002-02-18 23:59                     ` Daniel Phillips
2002-02-19  0:03                     ` Hugh Dickins
2002-02-19  0:03                       ` Hugh Dickins
2002-02-19  0:27                       ` Daniel Phillips
2002-02-19  0:27                         ` Daniel Phillips
2002-02-19  4:27                         ` Eric W. Biederman [this message]
2002-02-19  4:27                           ` Eric W. Biederman
2002-02-19 17:30                           ` Linus Torvalds
2002-02-19 17:30                             ` Linus Torvalds
     [not found] <Pine.LNX.4.33.0202182000320.5124-100000@coffee.psychology.mcmaster.ca>
2002-02-19  1:11 ` Daniel Phillips
  -- strict thread matches above, loose matches on Subject: below --
2002-02-19 18:18 Qing Huang
2002-02-19 18:18 ` Qing Huang

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=m1heoe3xls.fsf@frodo.biederman.org \
    --to=ebiederm@xmission.com \
    --cc=akpm@zip.com.au \
    --cc=dmccr@us.ibm.com \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=manfred@colorfullife.com \
    --cc=mingo@redhat.com \
    --cc=phillips@bonn-fries.net \
    --cc=riel@conectiva.com.br \
    --cc=rml@tech9.net \
    --cc=torvalds@transmeta.com \
    --cc=wli@holomorphy.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.