Messages in this thread | | | Date | Sat, 13 Mar 2004 18:54:06 +0100 | From | Andrea Arcangeli <> | Subject | Re: anon_vma RFC2 |
| |
On Sat, Mar 13, 2004 at 12:28:31PM -0500, Rik van Riel wrote: > On Sat, 13 Mar 2004, Hugh Dickins wrote: > > On Sat, 13 Mar 2004, Linus Torvalds wrote: > > > > if (PageAnonymous(page) && page->count > 1) { > > > newpage = alloc_page(); > > > copy_page(page, newpage); > > > page = newpage; > > > } > > > /* Move the page to the new address */ > > > page->index = address >> PAGE_SHIFT; > > > > > > and now we have zero special cases. > > > > That's always been a fallback solution, I was just a little too ashamed > > to propose it originally - seems a little wrong to waste whole pages > > rather than wasting a few bytes of data structure trying to track them: > > though the pages are pageable unlike any data structure we come up with. > > No, Linus is right. > > If a child process uses mremap(), it stands to reason that > it's about to use those pages for something. > > Think of it as taking the COW faults early, because chances > are you'd be taking them anyway, just a little bit later...
using mremap to _move_ anonymous maps is simply not frequent. It's so unfrequent that it's hard to tell if the child is going to _read_ or to _write_. Using those pages means nothing, all it matters is if it will use those pages from reading or for writing, and I don't see how you can assume it's going to write to them and how can you assume this is an early-COW in the common case.
the only interesting point to me is that it's non frequent, with that I certainly agreee, but I don't see this as an early-COW.
What worries me most are things like kde, they used the library design with the only object of sharing readonly anonymous pages, that's very smart since it still avoids one bug in one app to take down the whole GUI, but if they happen to use mremap to move those readonly page around after the for we'll screw them completely. I've no indication that this may be the case and if they ever call mrmap, but I cannot tell the opposite either. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |