On 22.08.2020 02:49, Peter Xu wrote: > This is a small series that I picked up from Linus's suggestion [0] to simplify > cow handling (and also more strict) by checking against page refcounts rather > than mapcounts. > > I'm CCing the author and reviewer of commit 52d1e606ee73 on ksm ("mm: reuse > only-pte-mapped KSM page in do_wp_page()", 2019-03-05). Please shoot if > there's any reason to keep the logic, or it'll be removed in this series. For > more information, please refer to [3,4]. I'm not sure I understand the reasons to remove that. But the reason to add was to avoid excess page copying, when it is not needed in real. > The new mm counter in the last patch can be seen as RFC, depending on whether > anyone dislikes it... I used it majorly for observing the page reuses, so it is > kind of optional. > > Two tests I did: > > - Run a busy loop dirty program [1] that uses 6G of memory, restrict to 1G > RAM + 5G swap (cgroup). A few hours later, all things still look good. > Make sure to observe (still massive) correct page reuses using the new > counter using the last patch, probably when swapping in. > > - Run umapsort [2] to make sure uffd-wp will work again after applying this > series upon master 5.9-rc1 (5.9-rc1 is broken). > > In all cases, I must confess it's quite pleased to post a series with diffstat > like this... Hopefully this won't break anyone but only to make everything > better. > > Please review, thanks. > > [0] https://lore.kernel.org/lkml/CAHk-=wjn90-=s6MBerxTuP=-FVEZtR-LpoH9eenEQ3A-QfKTZw@xxxxxxxxxxxxxx > [1] https://github.com/xzpeter/clibs/blob/master/bsd/mig_mon/mig_mon.c > [2] https://github.com/LLNL/umap-apps/blob/develop/src/umapsort/umapsort.cpp > [3] https://lore.kernel.org/lkml/CAHk-=wh0syDtNzt9jGyHRV0r1pVX5gkdJWdenwmvy=dq0AL5mA@xxxxxxxxxxxxxx > [4] https://lore.kernel.org/lkml/CAHk-=wj5Oyg0LeAxSw_vizerm=sLd=sHfcVecZMKPZn6kNbbXA@xxxxxxxxxxxxxx > > Linus Torvalds (1): > mm: Trial do_wp_page() simplification > > Peter Xu (3): > mm/ksm: Remove reuse_ksm_page() > mm/gup: Remove enfornced COW mechanism > mm: Add PGREUSE counter > > drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 8 --- > include/linux/ksm.h | 7 --- > include/linux/vm_event_item.h | 1 + > mm/gup.c | 40 ++------------ > mm/huge_memory.c | 7 +-- > mm/ksm.c | 25 --------- > mm/memory.c | 60 +++++++-------------- > mm/vmstat.c | 1 + > 8 files changed, 29 insertions(+), 120 deletions(-) >