Skip to content

MADV_FREE support

Minchan Kim linux-api linux-arch linux-mm lkml sparclinux 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest12 patches 4 repliesIn review
  2. v416 patches 3 repliesSuperseded
  3. v317 patches 18 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v213 patches28 repliesSuperseded
v18 patches29 repliesSuperseded

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/12mm: support madvise(MADV_FREE)include/linux/rmap.h include/linux/vm_event_item.h include/uapi/asm-generic/mman-common.h +5 more+190 -52 replies
2/12mm: define MADV_FREE for some archesarch/alpha/include/uapi/asm/mman.h arch/mips/include/uapi/asm/mman.h arch/parisc/include/uapi/asm/mman.h +1 more+4 -00 replies
3/12arch: uapi: asm: mman.h: Let MADV_FREE have same value for all architecturesarch/alpha/include/uapi/asm/mman.h arch/mips/include/uapi/asm/mman.h arch/parisc/include/uapi/asm/mman.h +2 more+5 -10 replies
4/12mm: free swp_entry in madvise_freemm/madvise.c+24 -10 replies
5/12mm: move lazily freed pages to inactive listinclude/linux/swap.h mm/madvise.c mm/swap.c+47 -00 replies
6/12mm: mark stable page dirty in KSMmm/ksm.c+6 -00 replies
7/12x86: add pmd_[dirty|mkclean] for THParch/x86/include/asm/pgtable.h+5 -00 replies
8/12sparc: add pmd_[dirty|mkclean] for THParch/sparc/include/asm/pgtable_64.h+9 -00 replies
9/12powerpc: add pmd_[dirty|mkclean] for THParch/powerpc/include/asm/pgtable-ppc64.h+2 -00 replies
10/12arm: add pmd_mkclean for THParch/arm/include/asm/pgtable-3level.h+1 -00 replies
11/12arm64: add pmd_mkclean for THParch/arm64/include/asm/pgtable.h+1 -00 replies
12/12mm: don't split THP page when syscall is calledinclude/linux/huge_mm.h mm/huge_memory.c mm/madvise.c+92 -60 replies

Reviews trailers per patch

6 of 12 patches have a Reviewed-by or Acked-by.

PatchHugh DickinsMinchan KimMichal HockoMax Filippov
1/12A-b A-b A-b A-b
2/12A-b
3/12A-b A-b
4/12A-b A-b
5/12A-b A-b
6/12A-b
7/12
8/12
9/12
10/12
11/12
12/12

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 4 reviewers.

Read the v5 thread

Cover letter [PATCH v5 00/12] MADV_FREE support

In v4, Andrew wanted to settle in old basic MADV_FREE and introduces new stuffs(ie, lazyfree LRU, swapless support and lazyfreeness) later so this version doesn't include them.

I have been tested it on mmotm-2015-11-25-17-08 with additional patch[1] from Kirill to prevent BUG_ON which he didn't send to linux-mm yet as formal patch. With it, I couldn't find any problem so far.

Note that this version is based on THP refcount redesign so I needed some modification on MADV_FREE because split_huge_pmd doesn't split a THP page any more and pmd_trans_huge(pmd) is not enough to guarantee the page is not THP page.
As well, for MAVD_FREE lazy-split, THP split should respect pmd's dirtiness rather than marking ptes of all subpages dirty unconditionally. Please, review last patch in this patchset.

mm: don't split THP page when syscall is called

[1] https://lkml.org/lkml/2015/11/17/134

git: git://git.kernel.org/pub/scm/linux/kernel/git/minchan/linux.git
branch: mm/madv_free-v4.4-rc2-mmotm-2015-11-25-17-08-v5r2

In this stage, I don't think we need to write man page. It could be done after solid policy and implementation.

* Change from v4
* drop lazyfree LRU
* drop swapless support
* drop lazyfreeness
* rebase on recent mmotom with THP refcount redesign

* Change from v3
* some bug fix
* code refactoring
* lazyfree reclaim logic change
* reordering patch

* Change from v2
* vm_lazyfreeness tuning knob
* add new LRU list - Johannes, Shaohua
* support swapless - Johannes

* Change from v1
* Don't do unnecessary TLB flush - Shaohua
* Added Acked-by - Hugh, Michal
* Merge deactivate_page and deactivate_file_page
* Add pmd_dirty/pmd_mkclean patches for several arches
* Add lazy THP split patch
* Drop [email protected] - Delivery Failure

Chen Gang (1):
arch: uapi: asm: mman.h: Let MADV_FREE have same value for all
architectures

Minchan Kim (11):
mm: support madvise(MADV_FREE)
mm: define MADV_FREE for some arches
mm: free swp_entry in madvise_free
mm: move lazily freed pages to inactive list
mm: mark stable page dirty in KSM
x86: add pmd_[dirty|mkclean] for THP
sparc: add pmd_[dirty|mkclean] for THP
powerpc: add pmd_[dirty|mkclean] for THP
arm: add pmd_mkclean for THP
arm64: add pmd_mkclean for THP
mm: don't split THP page when syscall is called

 arch/alpha/include/uapi/asm/mman.h       |   2 +
 arch/arm/include/asm/pgtable-3level.h    |   1 +
 arch/arm64/include/asm/pgtable.h         |   1 +
 arch/mips/include/uapi/asm/mman.h        |   2 +
 arch/parisc/include/uapi/asm/mman.h      |   2 +
 arch/powerpc/include/asm/pgtable-ppc64.h |   2 +
 arch/sparc/include/asm/pgtable_64.h      |   9 ++
 arch/x86/include/asm/pgtable.h           |   5 +
 arch/xtensa/include/uapi/asm/mman.h      |   2 +
 include/linux/huge_mm.h                  |   3 +
 include/linux/rmap.h                     |   1 +
 include/linux/swap.h                     |   1 +
 include/linux/vm_event_item.h            |   1 +
 include/uapi/asm-generic/mman-common.h   |   1 +
 mm/huge_memory.c                         |  87 +++++++++++++-
 mm/ksm.c                                 |   6 +
 mm/madvise.c                             | 199 +++++++++++++++++++++++++++++++
 mm/rmap.c                                |   8 ++
 mm/swap.c                                |  44 +++++++
 mm/swap_state.c                          |   5 +-
 mm/vmscan.c                              |  10 +-
 mm/vmstat.c                              |   1 +
 22 files changed, 383 insertions(+), 10 deletions(-)
Signature · 7 lines
1.9.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>