All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lance Yang <lance.yang@linux.dev>
To: kas@kernel.org
Cc: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org,
	ziy@nvidia.com, baolin.wang@linux.alibaba.com,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	kernel-team@meta.com, liam@infradead.org, nico.pache@linux.dev,
	ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org,
	lance.yang@linux.dev, usama.arif@linux.dev, vbabka@kernel.org,
	jannh@google.com
Subject: Re: [PATCH v5 5/9] mm/collapse: state what a collapse may do in the policy
Date: Thu, 15 Oct 2026 12:44:12 +0800	[thread overview]
Message-ID: <20261015044412.58610-1-lance.yang@linux.dev> (raw)
In-Reply-To: <20261014171145.3292736-6-kas@kernel.org>


On Wed, Oct 14, 2026 at 06:11:38PM +0100, Kiryl Shutsemau (Meta) wrote:
>Tests scattered through the collapse path decide what a collapse is
>allowed to do by asking whether khugepaged started it.  Between them they
>settle:
>
> - which VMAs are eligible, and how hard to try for a folio;
> - how many empty, swapped-out or shared PTEs a window may contain, and
>   whether a sub-PMD window is held to a stricter rule than a PMD;
> - whether a range has to look used, and whether a MADV_FREE'd page is
>   left alone;
> - whether the PMD is mapped as part of the request, and whether dirty
>   pages are worth writing back and retrying.
>
>None of those is a fact about khugepaged.  Each is something the caller
>decided before asking, and the collapse code should not have to look up
>who called to find out.
>
>Add struct collapse_policy for the caller to fill: khugepaged from its
>own settings, MADV_COLLAPSE from the fact that a user asked explicitly.
>Every test becomes a read of a field, and cc->is_khugepaged goes, having
>no reader left.
>
>The PTE limits come as two sets, one for a PMD-sized window and one for
>anything smaller, so that the helpers pick a set for the order and read
>it.  khugepaged takes no swapped-out or shared PTE into a sub-PMD window,
>and empty PTEs only when the knob says all or nothing; the warning for a
>knob value in between moves to where khugepaged fills its policy.  The
>fields only one side reads say which: anon_ or file_.  David Hildenbrand
>asked for both.
>
>khugepaged fills the policy once per scan pass, MADV_COLLAPSE once per
>call.  That is the one change in behaviour.  The max_ptes_* limits and the
>defrag setting behind the allocation mask are sampled once per pass rather
>than on every table.  A table scanned early in a pass and one scanned late
>are then treated alike.
>
>collapse_file() also drops a NULL check on the collapse_control.  It has
>one call site, reached only from collapse_single_pmd(), which dereferences
>cc unconditionally, so the check was already dead.
>
>Assisted-by: LLM
>Acked-by: David Hildenbrand (Arm) <david@kernel.org>
>Reviewed-by: Zi Yan <ziy@nvidia.com>
>Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
>Tested-by: Baolin Wang <baolin.wang@linux.alibaba.com>
>Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org>
>---

Reviewed-by: Lance Yang <lance.yang@linux.dev>


  reply	other threads:[~2026-10-15  4:44 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-14 17:11 [PATCH v5 0/9] mm/collapse: separate a collapse from its callers Kiryl Shutsemau (Meta)
2026-10-14 17:11 ` [PATCH v5 1/9] mm/khugepaged: drop redundant mm_struct pin in madvise_collapse() Kiryl Shutsemau (Meta)
2026-10-15  4:34   ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 2/9] mm/khugepaged: count collapses where khugepaged makes them Kiryl Shutsemau (Meta)
2026-10-15  4:36   ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 3/9] mm/khugepaged: rename mthp_present_ptes bitmap to eligible_ptes Kiryl Shutsemau (Meta)
2026-10-15  4:38   ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 4/9] mm/collapse: add collapse.h for the collapse interface Kiryl Shutsemau (Meta)
2026-10-15  4:41   ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 5/9] mm/collapse: state what a collapse may do in the policy Kiryl Shutsemau (Meta)
2026-10-15  4:44   ` Lance Yang [this message]
2026-10-14 17:11 ` [PATCH v5 6/9] mm/collapse: drop the collapse_possible() wrapper Kiryl Shutsemau (Meta)
2026-10-15  4:45   ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 7/9] mm/collapse: name the per-table scan reset for what it resets Kiryl Shutsemau (Meta)
2026-10-15  4:46   ` Lance Yang
2026-10-14 17:11 ` [PATCH v5 8/9] mm/collapse: call collapse_file() from collapse_single_pmd() Kiryl Shutsemau (Meta)
2026-10-15  5:39   ` Lance Yang
2026-10-15  7:21   ` Baolin Wang
2026-10-14 17:11 ` [PATCH v5 9/9] mm/collapse: separate scanning a PTE table from collapsing it Kiryl Shutsemau (Meta)
2026-10-15  5:43   ` Lance Yang
2026-10-14 21:16 ` [PATCH v5 0/9] mm/collapse: separate a collapse from its callers Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261015044412.58610-1-lance.yang@linux.dev \
    --to=lance.yang@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=jannh@google.com \
    --cc=kas@kernel.org \
    --cc=kernel-team@meta.com \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=nico.pache@linux.dev \
    --cc=ryan.roberts@arm.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.