On Sat, Feb 24, 2024 at 7:24 AM Minchan Kim <minchan@xxxxxxxxxx> wrote: > > On Sat, Feb 24, 2024 at 11:20:36AM +1300, Barry Song wrote: > > On Sat, Feb 24, 2024 at 11:09 AM Minchan Kim <minchan@xxxxxxxxxx> wrote: > > > > > > Hi Barry, > > > > > > On Fri, Feb 23, 2024 at 05:15:50PM +1300, Barry Song wrote: > > > > From: Barry Song <v-songbaohua@xxxxxxxx> > > > > > > > > While doing MADV_PAGEOUT, the current code will clear PTE young > > > > so that vmscan won't read young flags to allow the reclamation > > > > of madvised folios to go ahead. > > > > > > Isn't it good to accelerate reclaiming? vmscan checks whether the > > > page was accessed recenlty by the young bit from pte and if it is, > > > it doesn't reclaim the page. Since we have cleared the young bit > > > in pte in madvise_pageout, vmscan is likely to reclaim the page > > > since it wouldn't see the ferencecd_ptes from folio_check_references. > > > > right, but the proposal is asking vmscan to skip the folio_check_references > > if this is a PAGEOUT. so we remove both pte_clear_young and rmap > > of folio_check_references. > > > > > > > > Could you clarify if I miss something here? > > > > guest you missed we are skipping folio_check_references now. > > we remove both, thus, make MADV_PAGEOUT 6% faster. > > This makes sense to me. > > Only concern was race with mlock during the reclaim but the race was already > there for normal page reclaming. Thus, mlock would already handle it. yes. in try_to_unmap_one(), mlock()'s vma is not reclaimed, while (page_vma_mapped_walk(&pvmw)) { /* Unexpected PMD-mapped THP? */ VM_BUG_ON_FOLIO(!pvmw.pte, folio); /* * If the folio is in an mlock()d vma, we must not swap it out. */ if (!(flags & TTU_IGNORE_MLOCK) && (vma->vm_flags & VM_LOCKED)) { /* Restore the mlock which got missed */ if (!folio_test_large(folio)) mlock_vma_folio(folio, vma); page_vma_mapped_walk_done(&pvmw); ret = false; break; } BTW, Hi SeongJae, I am not quite sure if damon also needs this, so I have kept damon as is by setting ignore_references = false. MADV_PAGEOUT is an explicit hint users don't want the memory to be reclaimed, I don't know if it is true for damon as well. If you have some comments, please chime in. > > Thanks. Thanks Barry