Re: [PATCH v8 0/8] mm: Hot page tracking and promotion infrastructure

From: Joshua Hahn

Date: Fri Sep 11 2026 - 17:09:05 EST


On Tue, 28 Jul 2026 11:13:48 +0530 Bharata B Rao <bharata@xxxxxxx> wrote:

> Hi,
>
> This patchset introduces pghot, a subsystem for hot page tracking and
> promotion. It collects memory access information from multiple sources,
> classifies hot pages resident in lower-tier memory, and promotes them to
> faster tiers via a per-lower-tier-node kernel thread (kmigrated).
>
> The main changes in v8 are a rework of the per-section hotness map to be
> RCU-protected, a move of the pghot tunables from debugfs to sysctl, and a
> rework of the AMD IBS Memory Profiler driver that now uses a dedicated system
> interrupt vector instead of an NMI handler. The IBS driver is also split
> into core infrastructure and a separate patch that adds the runtime
> controls and arms the profiler. Also there are a few fixes to the hint
> faults source.
>
> Goals of this patchset:
>
> - Unify hot page detection from multiple sources like hint faults,
> page table scans, hardware hints (AMD IBS).
> - Decouple detection from migration.
> - Centralize promotion logic via per-lower-tier-node kmigrated kernel
> thread.
> - Move promotion rate-limiting and related logic used by numa_balancing=2
> (NUMAB2, the current NUMA balancing-based promotion) from the scheduler
> to pghot for broader reuse.
>
> Currently, multiple kernel subsystems detect page accesses independently.
> This patchset consolidates accesses from these mechanisms by providing:
>
> - A common API for reporting page accesses.
> - Shared infrastructure for tracking hotness at PFN granularity.
> - Per-lower-tier-node kernel threads for promoting pages.

Hi Bharata,

We've been testing pghot in a Meta kernel with worklaods to try and see
what the performance characteristics look like. I wanted to report
some of the findings that we've found in our testing. Note that these
results are from a modified kernel that has my tiered memcg series [1]
backported, as well as Gregory's numa balancing scanning fixes [2]
as well.

- Without tuning and using the default tunables that pghot comes with,
we've found around a slight performance regression against raw NUMAB2.
This was being run on a host with 750G DRAM and 250G CXL.
- However, we've found lower pgscan_direct, pgpromote, and pgdemote
rates as well.
- We've seen PSI dramatically drop on the host as well as the promotion
happens asynchronously.
- I also found a bug where the kmigrated thread isn't created for nodes
that are onlined later after boot, like CXL nodes that get onlined
with memory later on. I've been using a small hack commit in
pghot_memhp_callback that just checks for the MEM_ONLINE case and
spawns a kmigrated thread.

Finally, we've seen some issues with pghot causing userspace crashes,
which leads us to believe that there might be some bugs that manifest
in userspace as well (we have not been able to find out where in pghot
these bugs are introduced).

Thanks for working on pghot!
Joshua

[1] https://lore.kernel.org/all/20260807202059.2620949-1-joshua.hahnjy@xxxxxxxxx/
[2] https://lore.kernel.org/all/20260911001826.2109390-1-gourry@xxxxxxxxxx/