From: Zhaoyang Huang There are two reasons to have the recorded PMD bail out from doing the following iteration 1. It is worth of doing such a trade off thing in terms of reclaiming efficiency as test_bloom_filter only consume 20~30 instructions in modern processors(25 instructions in ARM64). 2. The PMD needs to accumulate young pages until aging happens while the new arrived folio reference checking under current max_seq refuse to do so which will affect carrying hot PMDs to new generation. Signed-off-by: Zhaoyang Huang --- mm/vmscan.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/vmscan.c b/mm/vmscan.c index 9d900be478ea..e50e98291d0d 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4227,6 +4227,10 @@ bool lru_gen_look_around(struct page_vma_mapped_walk *pvmw) /* avoid taking the LRU lock under the PTL when possible */ walk = current->reclaim_state ? current->reclaim_state->mm_walk : NULL; + /* may the pmd has been set in bloom filter */ + if (test_bloom_filter(mm_state, max_seq, pvmw->pmd)) + return true; + start = max(addr & PMD_MASK, vma->vm_start); end = min(addr | ~PMD_MASK, vma->vm_end - 1) + 1; -- 2.25.1