lkml.org 
[lkml]   [2023]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v4 00/14] Introduce Copy-On-Write to Page Table
    On Tue, Feb 14, 2023 at 1:42 PM Chih-En Lin <shiyn.lin@gmail.com> wrote:
    >
    > On Tue, Feb 14, 2023 at 11:30:26AM -0500, Pasha Tatashin wrote:
    > > > > The thing with THP is, that during fork(), we always allocate a backup PTE
    > > > > table, to be able to PTE-map the THP whenever we have to. Otherwise we'd
    > > > > have to eventually fail some operations we don't want to fail -- similar to
    > > > > the case where break_cow_pte() could fail now due to -ENOMEM although we
    > > > > really don't want to fail (e.g., change_pte_range() ).
    > > > >
    > > > > I always considered that wasteful, because in many scenarios, we'll never
    > > > > ever split a THP and possibly waste memory.
    > > > >
    > > > > Optimizing that for THP (e.g., don't always allocate backup THP, have some
    > > > > global allocation backup pool for splits + refill when close-to-empty) might
    > > > > provide similar fork() improvements, both in speed and memory consumption
    > > > > when it comes to anonymous memory.
    > > >
    > > > When collapsing huge pages, do/can they reuse those PTEs for backup?
    > > > So, we don't have to allocate the PTE or maintain the pool.
    > >
    > > It might not work for all pages, as collapsing pages might have had
    > > holes in the user page table, and there were no PTE tables.
    >
    > So if there have holes in the user page table, after we doing the
    > collapsing and then splitting. Do those holes be filled? Assume it is,
    > then, I think it's the reason why it's not work for all the pages.
    >
    > But, after those operations, Will the user get the additional and
    > unexpected memory (which is from the huge page filling)?

    Yes, more memory is going to be allocated for a process in such THP
    collapse case. This is similar to madvise huge pages, and touching the
    first byte may allocate 2M.

    Pasha

    \
     
     \ /
      Last update: 2023-03-27 00:23    [W:2.375 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site