Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1337324

Re: [PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd()

From "Kirill A. Shutemov" <kirill@shutemov.name>
Newsgroups linux.kernel
Subject Re: [PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd()
Date 2016-02-18 13:50 +0100
Message-ID <r3wbU-5xP-11@gated-at.bofh.it> (permalink)
References <r10pQ-1zg-3@gated-at.bofh.it> <r10pQ-1zg-19@gated-at.bofh.it> <r1qX0-2kB-15@gated-at.bofh.it> <r2KTF-6wn-33@gated-at.bofh.it> <r2Q31-1iJ-41@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, Feb 16, 2016 at 07:46:37AM -0800, Dave Hansen wrote:
> On 02/16/2016 02:14 AM, Kirill A. Shutemov wrote:
> > On Fri, Feb 12, 2016 at 10:42:09AM -0800, Dave Hansen wrote:
> >> On 02/11/2016 06:21 AM, Kirill A. Shutemov wrote:
> >>> File pmds can be safely skip on copy_huge_pmd(), we can re-fault them
> >>> later. COW for file mappings handled on pte level.
> >>
> >> Is this different from 4k pages?  I figured we might skip copying
> >> file-backed ptes on fork, but I couldn't find the code.
> > 
> > Currently, we only filter out on per-VMA basis. See first comment in
> > copy_page_range().
> > 
> > Here we handle PMD mapped file pages in COW mapping. File THP can be
> > mapped into COW mapping as result of read page fault.
> 
> OK...  So, copy_page_range() has a check for "Don't copy ptes where a
> page fault will fill them correctly."  Seems sane enough, but the check
> is implemented using a check for the VMA having !vma->anon_vma, which is
> a head-scratcher for a moment.  Why does that apply to huge tmpfs?
> 
> Ahh, MAP_PRIVATE.  MAP_PRIVATE vmas have ->anon_vma because they have
> essentially-anonymous pages for when they do a COW, so they don't hit
> that check and they go through the copy_*() functions, including
> copy_huge_pmd().
> 
> We don't handle 2M COW operations yet so we simply decline to copy these
> pages.  Might cost us page faults down the road, but it makes things
> easier to implement for now.
> 
> Did I get that right?

Yep.

> Any chance we could get a bit of that into the patch descriptions so
> that the next hapless reviewer can spend their time looking at your code
> instead of relearning the fork() handling for MAP_PRIVATE?

Sure.

-- 
 Kirill A. Shutemov

Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

[PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd() "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> - 2016-02-11 15:30 +0100
  Re: [PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd() Dave Hansen <dave.hansen@intel.com> - 2016-02-12 19:50 +0100
    Re: [PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd() "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> - 2016-02-16 11:20 +0100
      Re: [PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd() Dave Hansen <dave.hansen@intel.com> - 2016-02-16 16:50 +0100
        Re: [PATCHv2 17/28] thp: skip file huge pmd on copy_huge_pmd() "Kirill A. Shutemov" <kirill@shutemov.name> - 2016-02-18 13:50 +0100

csiph-web