From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Blaisorblade <blaisorblade@yahoo.it>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
Andrew Morton <akpm@osdl.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Linux Memory Management <linux-mm@kvack.org>,
Ulrich Drepper <drepper@redhat.com>,
Val Henson <val.henson@intel.com>, Bob Picco <bob.picco@hp.com>
Subject: Re: [patch 00/14] remap_file_pages protection support
Date: Wed, 03 May 2006 10:35:18 -0400 [thread overview]
Message-ID: <1146666919.5154.27.camel@localhost.localdomain> (raw)
In-Reply-To: <200605030320.50055.blaisorblade@yahoo.it>
On Wed, 2006-05-03 at 03:20 +0200, Blaisorblade wrote:
> On Tuesday 02 May 2006 19:16, Lee Schermerhorn wrote:
> > On Tue, 2006-05-02 at 13:45 +1000, Nick Piggin wrote:
> > > blaisorblade@yahoo.it wrote:
>
> > > I think I would rather this all just folded under VM_NONLINEAR rather
> > > than having this extra MANYPROTS thing, no? (you're already doing that in
> > > one direction).
>
> > One way I've seen this done on other systems
>
> I'm curious, which ones?
Let's see: System V [4.2MP] back in the days of USL [Unix Systems Labs]
did this, as did [does] Digital/Compaq/HP Tru64 on alpha. I'm not sure
if the latter came from the original Mach/OSF code or from Bob Picco's
rewrite thereof back in the 90's.
>
> > is to use something like a
> > prio tree [e.g., see the shared policy support for shmem] for sub-vma
> > protection ranges.
> Which sub-vma ranges? The ones created with mprotect?
>
> I'm curious about what is the difference between this sub-tree and the main
> tree... you have some point, but I miss which one :-) Actually when doing a
> lookup in the main tree the extra nodes in the subtree are not searched, so
> you get an advantage.
True, you still have locate the protection range in the subtree and then
still walk the page tables to install the new protections. Of course,
in the bad old days, the only time I saw thousands or 10s of thousands
of different mappings/vmas/regions/whatever was in vm stress tests.
Until squid came along, that is. Then we encountered, on large memory
alpha systems, 100s of thousands of mmaped files. Had to replace the
linear [honest] vma/mapping list at that point ;-).
>
> One possible point is that a VMA maps to one mmap() call (with splits from
> mremap(),mprotect(),partial munmap()s), and then they use sub-VMAs instead of
> VMA splits.
Yeah. That was the point--in response to Nick's comment about the
disconnect betwen the protections as reported by the vma and the actual
pte protections.
>
> > Most vmas [I'm guessing here] will have only the
> > original protections or will be reprotected in toto.
>
> > So, one need only
> > allocate/populate the protection tree when sub-vma protections are
> > requested. Then, one can test protections via the vma, perhaps with
> > access/check macros to hide the existence of the protection tree. Of
> > course, adding a tree-like structure could introduce locking
> > complications/overhead in some paths where we'd rather not [just
> > guessing again]. Might be more overhead than just mucking with the ptes
> > [for UML], but would keep the ptes in sync with the vma's view of
> > "protectedness".
> >
> > Lee
>
> Ok, there are two different situations, I'm globally unconvinced until I
> understand the usefulness of a different sub-tree.
>
> a) UML. The answer is _no_ to all guesses, since we must implement page tables
> of a guest virtual machine via mmap() or remap_file_pages. And they're as
> fragmented as they get (we get one-page-wide VMAs currently).
>
> b) the proposed glibc usage. The original Ulrich's request (which I cut down
> because of problems with objrmap) was to have one mapping per DSO, including
> code,data and guard page. So you have three protections in one VMA.
>
> However, this is doable via this remap_file_pages, adding something for
> handling private VMAs (handling movement of the anonymous memory you get on
> writes); but it's slow on swapout, since it stops using objrmap. So I've not
> thought to do it.
WARNING: multiple messages have this Message-ID (diff)
From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Blaisorblade <blaisorblade@yahoo.it>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
Andrew Morton <akpm@osdl.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Linux Memory Management <linux-mm@kvack.org>,
Ulrich Drepper <drepper@redhat.com>,
Val Henson <val.henson@intel.com>, Bob Picco <bob.picco@hp.com>
Subject: Re: [patch 00/14] remap_file_pages protection support
Date: Wed, 03 May 2006 10:35:18 -0400 [thread overview]
Message-ID: <1146666919.5154.27.camel@localhost.localdomain> (raw)
In-Reply-To: <200605030320.50055.blaisorblade@yahoo.it>
On Wed, 2006-05-03 at 03:20 +0200, Blaisorblade wrote:
> On Tuesday 02 May 2006 19:16, Lee Schermerhorn wrote:
> > On Tue, 2006-05-02 at 13:45 +1000, Nick Piggin wrote:
> > > blaisorblade@yahoo.it wrote:
>
> > > I think I would rather this all just folded under VM_NONLINEAR rather
> > > than having this extra MANYPROTS thing, no? (you're already doing that in
> > > one direction).
>
> > One way I've seen this done on other systems
>
> I'm curious, which ones?
Let's see: System V [4.2MP] back in the days of USL [Unix Systems Labs]
did this, as did [does] Digital/Compaq/HP Tru64 on alpha. I'm not sure
if the latter came from the original Mach/OSF code or from Bob Picco's
rewrite thereof back in the 90's.
>
> > is to use something like a
> > prio tree [e.g., see the shared policy support for shmem] for sub-vma
> > protection ranges.
> Which sub-vma ranges? The ones created with mprotect?
>
> I'm curious about what is the difference between this sub-tree and the main
> tree... you have some point, but I miss which one :-) Actually when doing a
> lookup in the main tree the extra nodes in the subtree are not searched, so
> you get an advantage.
True, you still have locate the protection range in the subtree and then
still walk the page tables to install the new protections. Of course,
in the bad old days, the only time I saw thousands or 10s of thousands
of different mappings/vmas/regions/whatever was in vm stress tests.
Until squid came along, that is. Then we encountered, on large memory
alpha systems, 100s of thousands of mmaped files. Had to replace the
linear [honest] vma/mapping list at that point ;-).
>
> One possible point is that a VMA maps to one mmap() call (with splits from
> mremap(),mprotect(),partial munmap()s), and then they use sub-VMAs instead of
> VMA splits.
Yeah. That was the point--in response to Nick's comment about the
disconnect betwen the protections as reported by the vma and the actual
pte protections.
>
> > Most vmas [I'm guessing here] will have only the
> > original protections or will be reprotected in toto.
>
> > So, one need only
> > allocate/populate the protection tree when sub-vma protections are
> > requested. Then, one can test protections via the vma, perhaps with
> > access/check macros to hide the existence of the protection tree. Of
> > course, adding a tree-like structure could introduce locking
> > complications/overhead in some paths where we'd rather not [just
> > guessing again]. Might be more overhead than just mucking with the ptes
> > [for UML], but would keep the ptes in sync with the vma's view of
> > "protectedness".
> >
> > Lee
>
> Ok, there are two different situations, I'm globally unconvinced until I
> understand the usefulness of a different sub-tree.
>
> a) UML. The answer is _no_ to all guesses, since we must implement page tables
> of a guest virtual machine via mmap() or remap_file_pages. And they're as
> fragmented as they get (we get one-page-wide VMAs currently).
>
> b) the proposed glibc usage. The original Ulrich's request (which I cut down
> because of problems with objrmap) was to have one mapping per DSO, including
> code,data and guard page. So you have three protections in one VMA.
>
> However, this is doable via this remap_file_pages, adding something for
> handling private VMAs (handling movement of the anonymous memory you get on
> writes); but it's slow on swapout, since it stops using objrmap. So I've not
> thought to do it.
--
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:[~2006-05-03 14:33 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-30 17:29 [patch 00/14] remap_file_pages protection support blaisorblade
2006-04-30 17:29 ` [patch 01/14] Fix comment about remap_file_pages blaisorblade
2006-04-30 17:29 ` [patch 02/14] remap_file_pages protection support: add needed macros blaisorblade
2006-04-30 17:29 ` [patch 03/14] remap_file_pages protection support: handle MANYPROTS VMAs blaisorblade
2006-04-30 17:29 ` [patch 04/14] remap_file_pages protection support: disallow mprotect() on manyprots mappings blaisorblade
2006-04-30 17:29 ` [patch 05/14] remap_file_pages protection support: cleanup syscall checks blaisorblade
2006-04-30 17:29 ` [patch 06/14] remap_file_pages protection support: enhance syscall interface blaisorblade
2006-04-30 17:30 ` [patch 07/14] remap_file_pages protection support: support private vma for MAP_POPULATE blaisorblade
2006-04-30 17:30 ` [patch 08/14] remap_file_pages protection support: use FAULT_SIGSEGV for protection checking blaisorblade
2006-04-30 17:30 ` [patch 09/14] remap_file_pages protection support: fix race condition with concurrent faults on same address space blaisorblade
2006-04-30 17:30 ` [patch 10/14] remap_file_pages protection support: fix get_user_pages() on VM_MANYPROTS vmas blaisorblade
2006-04-30 17:30 ` [patch 11/14] remap_file_pages protection support: pte_present should not trigger on PTE_FILE PROTNONE ptes blaisorblade
2006-05-02 3:53 ` Nick Piggin
2006-05-02 3:53 ` Nick Piggin
2006-05-03 1:29 ` Blaisorblade
2006-05-03 1:29 ` Blaisorblade
2006-05-06 10:03 ` Nick Piggin
2006-05-06 10:03 ` Nick Piggin
2006-05-07 17:50 ` Blaisorblade
2006-05-07 17:50 ` Blaisorblade
2006-04-30 17:30 ` [patch 12/14] remap_file_pages protection support: also set VM_NONLINEAR on nonuniform VMAs blaisorblade
2006-04-30 17:30 ` [patch 13/14] remap_file_pages protection support: uml, i386, x64 bits blaisorblade
2006-04-30 17:30 ` [patch 14/14] remap_file_pages protection support: adapt to uml peculiarities blaisorblade
2006-05-02 3:45 ` [patch 00/14] remap_file_pages protection support Nick Piggin
2006-05-02 3:45 ` Nick Piggin
2006-05-02 3:56 ` Nick Piggin
2006-05-02 3:56 ` Nick Piggin
2006-05-02 11:24 ` Ingo Molnar
2006-05-02 11:24 ` Ingo Molnar
2006-05-02 12:19 ` Nick Piggin
2006-05-02 12:19 ` Nick Piggin
2006-05-02 17:16 ` Lee Schermerhorn
2006-05-02 17:16 ` Lee Schermerhorn
2006-05-03 1:20 ` Blaisorblade
2006-05-03 1:20 ` Blaisorblade
2006-05-03 14:35 ` Lee Schermerhorn [this message]
2006-05-03 14:35 ` Lee Schermerhorn
2006-05-03 0:25 ` Blaisorblade
2006-05-03 0:25 ` Blaisorblade
2006-05-06 16:05 ` Ulrich Drepper
2006-05-07 4:22 ` Nick Piggin
2006-05-07 4:22 ` Nick Piggin
2006-05-13 14:13 ` Nick Piggin
2006-05-13 18:19 ` Valerie Henson
2006-05-13 18:19 ` Valerie Henson
2006-05-13 22:54 ` Valerie Henson
2006-05-13 22:54 ` Valerie Henson
2006-05-16 13:30 ` Nick Piggin
2006-05-16 13:30 ` Nick Piggin
2006-05-16 13:51 ` Andreas Mohr
2006-05-16 13:51 ` Andreas Mohr
2006-05-16 16:31 ` Valerie Henson
2006-05-16 16:31 ` Valerie Henson
2006-05-16 16:47 ` Andreas Mohr
2006-05-16 16:47 ` Andreas Mohr
2006-05-17 3:25 ` Nick Piggin
2006-05-17 3:25 ` Nick Piggin
2006-05-17 6:10 ` Blaisorblade
2006-05-17 6:10 ` Blaisorblade
2006-05-16 16:33 ` Valerie Henson
2006-05-16 16:33 ` Valerie Henson
2006-05-03 0:44 ` Blaisorblade
2006-05-03 0:44 ` Blaisorblade
2006-05-06 9:06 ` Nick Piggin
2006-05-06 9:06 ` Nick Piggin
2006-05-06 15:26 ` Ulrich Drepper
2006-05-02 10:21 ` Arjan van de Ven
2006-05-02 23:46 ` Valerie Henson
2006-05-03 0:26 ` Blaisorblade
2006-05-03 1:44 ` Ulrich Drepper
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=1146666919.5154.27.camel@localhost.localdomain \
--to=lee.schermerhorn@hp.com \
--cc=akpm@osdl.org \
--cc=blaisorblade@yahoo.it \
--cc=bob.picco@hp.com \
--cc=drepper@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nickpiggin@yahoo.com.au \
--cc=val.henson@intel.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.