Messages in this thread Patch in this message | | | Subject | [PATCH v1 7/7] mm/mlock: recharge mlocked pages at culling by vmscan | From | Konstantin Khlebnikov <> | Date | Wed, 04 Sep 2019 16:53:22 +0300 |
| |
If mlock cannot catch page in LRU then it isn't moved into unevictable lru. These pages are 'culled' by reclaimer and moved into unevictable lru. It seems pages locked with MLOCK_ONFAULT always go through this path.
Reclaimer calls try_to_unmap for already isolated pages, thus on this path we could freely change page to owner of any mlock vma we found in rmap.
This patch passes flag TTU_LRU_ISOLATED into try_to_ummap to move pages in mmlock_vma_page().
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> --- mm/vmscan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c index bf7a05e8a717..2060f254dd6b 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1345,7 +1345,8 @@ static unsigned long shrink_page_list(struct list_head *page_list, * processes. Try to unmap it here. */ if (page_mapped(page)) { - enum ttu_flags flags = ttu_flags | TTU_BATCH_FLUSH; + enum ttu_flags flags = ttu_flags | TTU_BATCH_FLUSH | + TTU_LRU_ISOLATED; if (unlikely(PageTransHuge(page))) flags |= TTU_SPLIT_HUGE_PMD;
| |