On Thu, Apr 23, 2026 at 06:37:53PM +0800, Bunyod Suvonov wrote: > Vmscan has six main reclaim entry points: try_to_free_pages() for > direct reclaim, try_to_free_mem_cgroup_pages() for memcg reclaim, > mem_cgroup_shrink_node() for memcg soft limit reclaim, node_reclaim() > for node reclaim, shrink_all_memory() for hibernation reclaim, and > balance_pgdat() for kswapd reclaim. > > All of them, except for shrink_all_memory() and balance_pgdat(), already > have begin/end tracepoints. This makes it harder to trace which reclaim > path is responsible for memory reclaim activity, because kswapd reclaim > cannot be identified as cleanly as other reclaim entry points, even > though it is the main background reclaim path under memory pressure. > There may be no need to trace shrink_all_memory() as it is primarily > used during hibernation. So this patch adds the missing tracepoint pair > for balance_pgdat(). > > The begin tracepoint records the node id, requested reclaim order, and > highest_zoneidx. The end tracepoint records the node id, reclaim order > that balance_pgdat() finished with, highest_zoneidx, and nr_reclaimed.
Do we need to trace highest_zoneidx at the end? Can it change within balance_pgdat()? > Together, they show the requested reclaim order and zone bound, whether > reclaim fell back to a lower order, and how much reclaim work was done. > > Signed-off-by: Bunyod Suvonov <[email protected]> Overall looks good.
