Re: [PATCH v2 1/1] mm: skip mlocked THPs that are underused early in deferred_split_scan()

Kiryl Shutsemau
2025-09-08T11:44:38Z

On Mon, Sep 08, 2025 at 01:32:05PM +0200, David Hildenbrand wrote:
> On 08.09.25 12:38, Kiryl Shutsemau wrote:
> > On Mon, Sep 08, 2025 at 05:07:41PM +0800, Lance Yang wrote:
> > > From: Lance Yang <lance.yang@linux.dev>
> > >
> > > When we stumble over a fully-mapped mlocked THP in the deferred shrinker,
> > > it does not make sense to try to detect whether it is underused, because
> > > try_to_map_unused_to_zeropage(), called while splitting the folio, will not
> > > actually replace any zeroed pages by the shared zeropage.
> >
> > It makes me think, does KSM follows the same logic as
> > try_to_map_unused_to_zeropage()?
> >
> > I cannot immediately find what prevents KSM from replacing zeroed mlocked
> > folio with ZERO_PAGE().
> >
> > Hm?
>
> I assume if you're using mlock and at the same time enable KSM for a
> process/VMA, you're doing something wrong.
>
> In contrast, THP is supposed to be transparent (yeah, I know ...).

Yeah, I guess it is user error.

Maybe we should make ksm_compatible() return false for VM_LOCKED?
KSM breaks mlock() contract.

But it can be risky if someone already relies on this broken behaviour.

--
Kiryl Shutsemau / Kirill A. Shutemov