Re: [PATCH v7 0/7] mm: Hot page tracking and promotion infrastructure

From: Bharata B Rao

Date: Tue May 05 2026 - 09:44:27 EST


On 04-May-26 11:39 AM, Bharata B Rao wrote:
> Results
> =======
> Posted as replies to this mail thread.

Initial Graph500 benchmark numbers for IBS Memory Profiler source:

Test system details
-------------------
3 node AMD system with 2 regular NUMA nodes (0, 1) in NPS2 mode and a CXL node (2)

$ numactl -H
available: 3 nodes (0-2)
node distances:
node 0 cpus: 0-63,128-191
node 0 size: 257715 MB
node 1 cpus: 64-127,192-255
node 1 size: 257845 MB
node 2 cpus:
node 2 size: 258032 MB
node distances:
node 0 1 2
0: 10 12 50
1: 12 10 50
2: 255 255 10

Hotness sources
---------------
NUMAB0 - Without NUMA Balancing in base case and with no source enabled
in the pghot case. No migrations occur.
NUMAB2 - Existing hot page promotion for the base case and
use of hint faults as source in the pghot case.
HWHINTS - IBS Memory Profiler as source for pghot

Pghot by default promotes after two accesses but for NUMAB2 and HWHINTS
sources, promotion is done after one access to match the base behaviour.
(/sys/kernel/debug/pghot/freq_threshold=1)

Graph500 details
----------------
Command: mpirun -n 128 --bind-to core --map-by core
graph500/src/graph500_reference_bfs 28 16

After the graph creation, the processes are stopped and data is migrated
to CXL node 2 before continuing so that BFS phase starts accessing lower
tier memory.

Total memory usage is slightly over 100GB and will fit within Node 0 and 1.
Hence there is no memory pressure to induce demotions.

harmonic_mean_TEPS - Higher is better
=============================================================================
Base Base pghot-default
NUMAB0 NUMAB2 NUMAB2
=============================================================================
harmonic_mean_TEPS 4.09614e+08 1.28401e+09 1.47926e+09
mean_time 10.4853 3.34492 2.90342
median_TEPS 4.10086e+08 1.44584e+09 1.85957e+09
max_TEPS 4.1661e+08 1.79773e+09 1.99242e+09

pgpromote_success 0 13746029 13412213
numa_hint_faults 0 13753808 26669823

pghot_recorded_accesses NA NA 26669551
pghot_recorded_hintfaults NA NA 26669823
pghot_recorded_hwhints NA NA 0
hwhint_total_events NA NA 0
=============================================================================
pghot-default
HWHINTS
=============================================================================
harmonic_mean_TEPS 1.52334e+09
mean_time 2.81941
median_TEPS 1.57446e+09
max_TEPS 1.72014e+09

pgpromote_success 3415599
numa_hint_faults 0

pghot_recorded_accesses 3440912
pghot_recorded_hintfaults 0
pghot_recorded_hwhints 24475210
hwhint_total_events 24475244
=============================================================================
While no migration (NUMAB0) at all hurts Graph500, HWHINTS with pghot is able
to provide similar benchmark numbers even when not migrating as aggressively
as base NUMAB2.