Here is a part from the man page explaining the MADV_FREE semantics: The kernel can thus free thesepages, but the freeing could be delayed until memory pressure occurs. For each of the pages that has been marked to be freed but has not yet been freed, the free operation will be canceled if the caller writes into the page. If there is no subsequent write, the kernel can free the pages at any time. IIUC, if there is no subsequent write, lazyfree pages will eventually be reclaimed. khugepaged treats lazyfree pages the same as pte_none, avoiding copying them to the new huge page during collapse. It seems that lazyfree pages are reclaimed before khugepaged collapses them. This aligns with user expectations. However, IMO, if the content of MADV_FREE pages remains valid during collapse, then khugepaged treating lazyfree pages the same as pte_none might not be suitable. Thanks, Lance On Fri, Feb 2, 2024 at 8:57 PM Michal Hocko <mhocko@xxxxxxxx> wrote: > > On Fri 02-02-24 20:52:48, Lance Yang wrote: > > On Fri, Feb 2, 2024 at 8:27 PM Michal Hocko <mhocko@xxxxxxxx> wrote: > > > > > > On Fri 02-02-24 19:18:31, Lance Yang wrote: > > > > IMO, since it's treated the same as pte_none, > > > > perhaps lazyfree pages shouldn't be copied to > > > > the new huge page. > > > > > > Why? The content of MADV_FREE page is valid until it is reclaimed. > > > > IMO, if MADV_FREE pages are considered valid until > > reclaimed, treating them the same as pte_none might > > pose a conflict. > > What kind of conflict? > -- > Michal Hocko > SUSE Labs