[PATCHv3 0/6] mm: Improve mlock tracking for large folios

Kiryl Shutsemau posted 6 patches 1 week, 1 day ago
include/linux/rmap.h |   5 ++
mm/filemap.c         |  15 ++++++
mm/memory.c          |   9 +---
mm/page_vma_mapped.c |   1 +
mm/rmap.c            | 109 ++++++++++++++++++++++++-------------------
5 files changed, 84 insertions(+), 55 deletions(-)
[PATCHv3 0/6] mm: Improve mlock tracking for large folios
Posted by Kiryl Shutsemau 1 week, 1 day ago
From: Kiryl Shutsemau <kas@kernel.org>

The patchset includes several fixes and improvements related to mlock
tracking of large folios.

The main objective is to reduce the undercount of Mlocked memory in
/proc/meminfo and improve the accuracy of the statistics.

Patches 1-2:

These patches address a minor race condition in folio_referenced_one()
related to mlock_vma_folio().

Currently, mlock_vma_folio() is called on large folio without the page
table lock, which can result in a race condition with unmap (i.e.
MADV_DONTNEED). This can lead to partially mapped folios on the
unevictable LRU list.

While not a significant issue, I do not believe backporting is
necessary.

Patch 3:

This patch adds mlocking logic similar to folio_referenced_one() to
try_to_unmap_one(), allowing for mlocking of large folios where
possible.

Patch 4-5:

These patches modifies finish_fault() and faultaround to map in the
entire folio when possible, enabling efficient mlocking upon addition to
the rmap.

Patch 6:

This patch makes rmap mlock large folios if they are fully mapped,
addressing the primary source of mlock undercount for large folios.

v3:
 - Map entire folios on faultaround where possible;
 - Fix comments and commit messages;
 - Apply tags;

Kiryl Shutsemau (6):
  mm/page_vma_mapped: Track if the page is mapped across page table
    boundary
  mm/rmap: Fix a mlock race condition in folio_referenced_one()
  mm/rmap: mlock large folios in try_to_unmap_one()
  mm/fault: Try to map the entire file folio in finish_fault()
  mm/filemap: Map entire large folio faultaround
  mm/rmap: Improve mlock tracking for large folios

 include/linux/rmap.h |   5 ++
 mm/filemap.c         |  15 ++++++
 mm/memory.c          |   9 +---
 mm/page_vma_mapped.c |   1 +
 mm/rmap.c            | 109 ++++++++++++++++++++++++-------------------
 5 files changed, 84 insertions(+), 55 deletions(-)

-- 
2.50.1